Rails toplama yolları ve üye yolları arasındaki fark nedir?
Örneğin,
resources :photos do
member do
get :preview
end
end
karşı
resources :photos do
collection do
get :search
end
end
Anlamıyorum.
Rails toplama yolları ve üye yolları arasındaki fark nedir?
Örneğin,
resources :photos do
member do
get :preview
end
end
karşı
resources :photos do
collection do
get :search
end
end
Anlamıyorum.
Yanıtlar:
Bir üye yol, bir üye üzerinde hareket ettiğinden bir kimlik gerektirir . Bir toplama yolu, bir nesne koleksiyonu üzerinde hareket ettiği için değil. Önizleme, tek bir nesneye etki ettiği (ve görüntülediği) için üye yolunun bir örneğidir. Arama bir koleksiyon rotasına örnektir, çünkü bir nesne koleksiyonuna etki eder (ve görüntüler).
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
yerine search_photos_url
insanlar düşünmemeli _path
ve _url
ikisi arasında bir fark olduğunu kullanmalıdır .
Theo'nun cevabı doğrudur. Dokümantasyon adına, ikisinin farklı yol yardımcıları üreteceğini de belirtmek isterim.
member {get 'preview'}
üretecek:
preview_photo_path(@photo) # /photos/1/preview
collection {get 'search'}
üretecek:
search_photos_path # /photos/search
Çoğulluğa dikkat edin!
1) : koleksiyon - Koleksiyonda çalışan diğer eylemler için adlandırılmış yollar ekleyin. #{action} => #{method}
Metodun olduğu yerde :get/:post/:put/:delete
, bir öncekinin herhangi bir dizisini ya da: yöntem önemli değilse herhangi bir karmasını alır . Bu rotalar, bir users_list_users_url yolu ile / users / customer_list gibi bir URL ile eşleşir .
map.resources: kullanıcılar,: koleksiyon => {: müşteriler_listesi =>: get}
2) :member
- Aynı :collection
, ancak belirli bir üye üzerinde işlem yapan eylemler için.
map.resources: kullanıcılar,: üye => {: etkin olmayan =>: posta}
gibi muamele /users/1;inactive=> [:action => 'inactive', :id => 1]