Skip to content

Instantly share code, notes, and snippets.

@kienbt01359
Last active December 25, 2015 02:08
Show Gist options
  • Save kienbt01359/6899926 to your computer and use it in GitHub Desktop.
Save kienbt01359/6899926 to your computer and use it in GitHub Desktop.

#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

Trong Rails 4

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

  1. Commit
  2. routing_concerns gem

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