#Routing Concerns [Rails 4 Countdown to 2013]
Bài viết này là 1 phần của series 31 bài viết về Rails 4 được công bố mỗi ngày trong 12/2012
Trong Rails config/routes.rb
chịu trách nhiệm trong việc map URLs đến các actions của controller
. Trong những năm qua, những sự bổ sung hữu ích được thêm vào để làm nhỏ file này xuống cho các developers, chúng ta có thể dừng việc lặp lại nay.
Một ví dụ là phương thức điều hướng resources, cái mà map 4 routes đã được đặt tên tới 7 actions trong controller dựa trên phương thức request HTTP.
Với Rails 4, routing concerns đã được thêm vào router. Routing concerns cho phép bạn khai báo routes chung, mà có thể kết hợp vào trong các resources và routes khác.
##Ví dụ
Một ví dụ chung của sự trùng lặp trong file config/routes.rb
xảy ra khi có 1 mối quan hệ đa hình được nested dưới resource cha.
Đây là một ví dụ:
###Trong Rails 3
Older::Application.routes.draw do
resources :projects do
resources :comments
end
resources :tasks do
resources :comments
end
resources :articles do
resources :comments
end
end
Sử dụng hàm concern
khi routing, chúng ta có thể định nghĩa những routes chung. Tất cả routes nằm trong một concern sẽ không mặc định include trong routes của bạn. Concern routes sẽ được include trong một resource bằng cách dùng option :concerns
.
:concerns
option có thể chấp nhận một hoặc nhiều concerns nữa.
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 có một cái gì đó bạn muốn thử trong ứng dụng Rails 3.2, bạn có thể sử dụng 1 gem tên là "routing_concerns". Đã được merged vào Rails code base.
##Đọc thêm
##Tham khảo http://blog.remarkablelabs.com/2012/12/routing-concerns-rails-4-countdown-to-2013