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。
译自:来源