루비 온 레일의 수집 경로와 회원 경로의 차이점은 무엇입니까?


278

Rails의 수금 경로와 회원 경로의 차이점은 무엇입니까?

예를 들어

resources :photos do
  member do
    get :preview
  end
end

resources :photos do
  collection do
    get :search
  end
end

이해가 안 돼요

답변:


407

그것은에 작용하기 때문에 회원 경로, ID를 필요로 멤버 . 컬렉션 라우트는 개체 컬렉션에 작용하기 때문에 아닙니다. 미리보기는 단일 경로에 작용하고 표시하기 때문에 멤버 경로의 예입니다. 검색은 개체의 컬렉션에 작용하고 표시하기 때문에 컬렉션 경로의 예입니다.


작성 조치는 어떻습니까? '만들기'에 대한 대안을 만들고 싶다고 가정 해 봅시다. 회원으로 간주됩니까?
digitalWestie

1
예, 작성은 멤버 조치입니다.
Theo

1
그러나 블록없이 "get"을 추가하는 것은 어떻습니까? 회원 또는 수금 경로입니까? 내 테스트는 컬렉션을 보여 주지만 다른 id 변수 이름을 사용했습니다.
lzap

6
회원 활동을 작성 하시겠습니까? 전달할 ID가 없습니다.
George Shaw

6
@YoniGeek. 정확하지 않습니다. guides.rubyonrails.org/routing.html , 2.7 중첩 리소스를 참조하십시오 . 컬렉션에 추가 할 때 만들기는 항상 컬렉션 작업입니다. 명명 된 작성 경로는 항상 복수입니다. 귀하의 예에서 게시물의 구성원에 속하는 투표 모음에 새 투표를 추가합니다. id는 생성되는 투표 모음이 아니라 회원 게시물을 나타냅니다. 예를 들어 명명 된 경로는 posts_votes_url입니다.
George Shaw

217
                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)

39
가장 소중한 게시물!
aldo.roman.nurena

1
사용해야 search_photos_path대신 search_photos_url사람들이 생각하지 않도록 _path하고 _url둘 사이에 차이가 있습니다.
Joshua Pinter

31

테오의 대답은 맞습니다. 문서화를 위해 두 사람이 서로 다른 경로 도우미를 생성한다는 점도 알고 싶습니다.

member {get 'preview'} 생성합니다 :

preview_photo_path(@photo) # /photos/1/preview

collection {get 'search'} 생성합니다 :

search_photos_path # /photos/search

복수 참고!


14

1) : collection-컬렉션 에서 작동하는 다른 작업에 대한 명명 된 경로를 추가합니다. 메소드가 중요하지 않은 경우 #{action} => #{method}method is :get/:post/:put/:delete, 이전의 배열 또는 : any 의 해시를 사용 합니다. 이 경로 는 customers_list_users_url 경로와 함께 / users / customers_list 와 같은 URL에 매핑됩니다 .

map.resources : users, : collection => {: customers_list => : get}

2) :member-와 동일 :collection하지만 특정 멤버에서 작동하는 작업의 경우.

map.resources : users, : member => {: inactive => : post}

그것은로 취급 /users/1;inactive=> [:action => 'inactive', :id => 1]


좋은 예입니다. 상단의 설명이 더 나을 수도 있습니다.
hitesh israni
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.