Rails4 Routing Concerns

rails有个最新的特性叫做routing concerns。这个特性通过声明并复用相同的routes来帮助减少了routes.rb中的代码重复。

举个例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
resources :messages do
  resources :comments
  resources :categories
  resources :tags
end

resources :posts do
  resources :comments
  resources :categories
  resources :tags
end

resources :items do
  resources :comments
  resources :categories
  resources :tags
end

注意到有可以复用的地方:

1
2
3
4
5
concern :sociable do
  resources :comments
  resources :categories
  resources :tags
end

我们现在可以使用一直复用这些代码:

1
2
3
resources :messages, concerns: :sociable
resources :posts, concerns: :sociable
resources :items, concerns: :sociable

Concern blocks同样能传入一个参数进resources,像这样:

1
2
3
4
5
6
7
8
9
concern :sociable do |options|
  resources :comments, options
  resources :categories, options
  resources :tags, options
end

resources :posts do
  concerns :sociable, only: :create
end

这是Rails4的一部分,如果想提前尝鲜,装routing_concerns这个gem。
译自:来源

Comments

Copyright © 2013 robinhwang Redesgin by RobinHwang