Sự khác biệt giữa các tuyến thu thập và các tuyến thành viên trong Rails là gì?
Ví dụ,
resources :photos do
member do
get :preview
end
end
đấu với
resources :photos do
collection do
get :search
end
end
Tôi không hiểu
Sự khác biệt giữa các tuyến thu thập và các tuyến thành viên trong Rails là gì?
Ví dụ,
resources :photos do
member do
get :preview
end
end
đấu với
resources :photos do
collection do
get :search
end
end
Tôi không hiểu
Câu trả lời:
Một tuyến thành viên sẽ yêu cầu ID, bởi vì nó hoạt động trên một thành viên . Một lộ trình thu thập không phải vì nó hoạt động trên một bộ sưu tập các đối tượng. Xem trước là một ví dụ về tuyến đường thành viên, bởi vì nó hoạt động trên (và hiển thị) một đối tượng. Tìm kiếm là một ví dụ về tuyến đường bộ sưu tập, bởi vì nó hoạt động trên (và hiển thị) một bộ sưu tập các đối tượng.
URL Helper Description
----------------------------------------------------------------------------------------------------------------------------------
member /photos/1/preview preview_photo_path(photo) Acts on a specific resource so required id (preview specific photo)
collection /photos/search search_photos_path Acts on collection of resources(display all photos)
search_photos_path
thay vì search_photos_url
vậy mọi người sẽ không nghĩ _path
và _url
là một sự khác biệt giữa hai.
Theo câu trả lời là đúng. Vì mục đích tài liệu, tôi cũng muốn lưu ý rằng cả hai sẽ tạo ra các trình trợ giúp đường dẫn khác nhau.
member {get 'preview'}
sẽ tạo ra:
preview_photo_path(@photo) # /photos/1/preview
collection {get 'search'}
sẽ tạo ra:
search_photos_path # /photos/search
Lưu ý số nhiều!
1) : bộ sưu tập - Thêm các tuyến được đặt tên cho các hành động khác hoạt động trên bộ sưu tập. Đưa ra một hàm băm #{action} => #{method}
, trong đó phương thức là :get/:post/:put/:delete
một mảng của bất kỳ phương thức nào trước đó hoặc: bất kỳ nếu phương thức đó không quan trọng. Các tuyến đường này ánh xạ tới một URL như / users / customer_list , với một lộ trình của khách hàng_list_usftimeurl .
map.resource: users ,: sưu tập => {: fans_list =>: get}
2) :member
- Tương tự :collection
, nhưng đối với các hành động hoạt động trên một thành viên cụ thể.
map.resource: users ,: thành viên => {: không hoạt động =>: bài}
nó được coi là /users/1;inactive=> [:action => 'inactive', :id => 1]