อะไรคือความแตกต่างระหว่างเส้นทางการสะสมและเส้นทางสมาชิกใน Rails?
ตัวอย่างเช่น,
resources :photos do
member do
get :preview
end
end
กับ
resources :photos do
collection do
get :search
end
end
ฉันไม่เข้าใจ
อะไรคือความแตกต่างระหว่างเส้นทางการสะสมและเส้นทางสมาชิกใน Rails?
ตัวอย่างเช่น,
resources :photos do
member do
get :preview
end
end
กับ
resources :photos do
collection do
get :search
end
end
ฉันไม่เข้าใจ
คำตอบ:
เส้นทางที่สมาชิกจะต้องมี ID, เพราะมันทำหน้าที่ในสมาชิก เส้นทางของคอลเลกชันไม่ได้เกิดจากการทำงานกับคอลเลกชันของวัตถุ ดูตัวอย่างเป็นตัวอย่างของเส้นทางสมาชิกเนื่องจากมันทำหน้าที่ (และแสดง) วัตถุเดียว การค้นหาเป็นตัวอย่างของเส้นทางการรวบรวมเพราะมันทำหน้าที่ (และแสดง) การรวบรวมวัตถุ
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
แทนsearch_photos_url
ดังนั้นผู้ใช้จะไม่คิด_path
และ_url
มีความแตกต่างระหว่างทั้งสอง
คำตอบของธีโอนั้นถูกต้อง เพื่อประโยชน์ของเอกสารฉันต้องการทราบว่าทั้งสองจะสร้างผู้ช่วยเหลือเส้นทางที่แตกต่างกัน
member {get 'preview'}
จะสร้าง:
preview_photo_path(@photo) # /photos/1/preview
collection {get 'search'}
จะสร้าง:
search_photos_path # /photos/search
หมายเหตุส่วนใหญ่!
1) : การรวบรวม - เพิ่มเส้นทางที่มีชื่อสำหรับการดำเนินการอื่น ๆ ที่ดำเนินการกับการรวบรวม ใช้แฮชของ#{action} => #{method}
โดยที่ method คือ:get/:post/:put/:delete
อาร์เรย์ของรายการก่อนหน้าหรือ: ใด ๆ หากวิธีการไม่สำคัญ เส้นทางนี้แผนที่ไปยัง URL เช่นผู้ใช้ / / customers_listกับเส้นทางของcustomers_list_users_url
map.resources: ผู้ใช้: collection => {: customers_list =>: get}
2) :member
- เหมือนกับ:collection
แต่สำหรับการกระทำที่ดำเนินการกับสมาชิกที่ระบุ
map.resources: ผู้ใช้,: member => {: inactive =>: post}
มันถือว่าเป็น /users/1;inactive=> [:action => 'inactive', :id => 1]