2009-03-22 4 views
0

다음과 같이 config/routes.rb 파일이 있습니다.레일스 : 상위 리소스로 이동

 
    map.resources :categories, :shallow => true do |cat| 
    cat.resources :entries, :member => {:yes => :post, :no => :post } 
    end 

내 목표는 게임에서와 같이 항목을 수정하는 버튼으로 예와 아니요를 사용하는 것입니다 (예와 아니오는 항목에 대한 답입니다) .

예/아니요를 클릭하면 category/: category_id/entries로 돌아갈 것입니다. 예쁜 레이아웃이있는 곳이 있기 때문입니다.

문제는 내가 가지고있는 것입니다./item_id 항목에서 yes 방법을 사용했기 때문에이 항목이있는 범주 ID를 잃어 버렸고 범주에 대한 링크를 얻는 방법을 모른다.

내가 사용하지 않고 시도 할 수있을 것 같아요 : 전체 매개 변수를 얻을 수 있도록 얕은 매개 변수를하지만 나는 아마도 hierarqui (항목에 코멘트가있을 수 있습니다)로 갈 예정이며이 간단한 문제를 어떻게 관리 할 것인지 배우고 싶습니다 상태.

답변

3

항목이 카테고리의 하위 소스 인 경우 모델 사이에 상위 - 하위 관계가있을 수 있습니다. 맞습니까? 그렇다면, 당신은 사용할 수 있습니다 : 당신의 yesno 방법에

redirect_to category_entries_path(@entry.category) 

합니다.

+0

완벽하게 작동했습니다. 나는 프로그래머를 위해 레일스가하는 일의 양에 여전히 압도 당하고있다. 모델에서 belongs_to가 @ entry.category를 생성한다는 것을 알지 못했습니다. 고마워요. – Jordi

0

, 당신은 지금과 같은 범주를 지정할 수 있습니다? 나는 작동하지 않았다 : 얕은 옵션 (그리고이 솔루션은 아마 그것없이있다.), 그러나 resource_controller는 어떤 종류의 다형성 자원을 지원한다. (당신은/entries,/category/3/entries,/whatever/12/entries와 같은 URL을 가질 수있다. 기타). 그런 다음이 함께 항목에 대한 URL을 생성 할 수 있습니다

<%= link_to 'Entries', collection_path %> 

그러나 경우에

당신의 '예'와 '더'방법, 당신은 추가 할 필요가 없습니다 :

redirect_to collection_path 

를 '예'로 응답 그리고 '아니오'행동들.