Skip to content

Instantly share code, notes, and snippets.

@khanhhd
Last active December 25, 2015 03:39
Show Gist options
  • Save khanhhd/6911577 to your computer and use it in GitHub Desktop.
Save khanhhd/6911577 to your computer and use it in GitHub Desktop.

##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

Ví dụ

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment