##Routing Concerns
Trong Rails config / routes.rb
tập tin đóng gói tất cả các ánh xạ từ các URL tới các action trong controller. Trong những năm qua, một số bổ sung hữu ích đã được thêm vào bởi các nhà phát triển, chúng ta có thể tránh lặp đi lặp lại. Một ví dụ của việc này là routing method resources
, nó map
4 tên routes tới 7 action trong controller dựa trên phương thức request của HTTP.
Như của Rails 4, routes concern
đã được thêm vào routes. routing concern
cho phép bạn khai trong routes như thông thường, có thể được trộn vào các resource
khác và routes
Một ví dụ phổ biến của việc lặp lại trong file config / routes.rb
sẽ xảy ra khi polymorphic association
được đặt trong một resource
cha.
Đây là một ví dụ của nhiều resource
có cùng comment
:
Older::Application.routes.draw do
resources :projects do
resources :comments
end
resources :tasks do
resources :comments
end
resources :articles do
resources :comments
end
end
end
##The Rails 4 Way
Sử dụng phương pháp routing concern
, chúng ta có thể định nghĩa routes
chung. Tất cả các routes
trong một concern
sẽ không được thêm mặc định vào routes. Các routes concern
sẽ chỉ được include
trong một resource
bằng cách truyền qua nó trong routing option: concern
. :concern
có thể tùy chọn một hoặc nhiều concern cho resource
.
Newer::Application.routes.draw do
concern :commentable do
resources :comments
end
resources :projects, concerns: :commentable
resources :tasks, concerns: :commentable
resources :articles, concerns: :commentable
end
##Upgrade Path
Nếu bạn muốn thử trong Rails 3.2 trong ứng dụng, có thể sử dụng gem routing_concerns
nhưng sẽ có rủi ro. Code đã được merge vào trong Rails codebase
##Tài liệu tham khảo
http://blog.remarkablelabs.com/2012/12/routing-concerns-rails-4-countdown-to-2013