1

의 예를 안내 나는 레일처럼 중첩 된 자원을 가지고 있다고 가정 해 봅시다 : http://guides.rubyonrails.org/routing.html#nested-resourcesRails 3.x에서 상위 리소스를 참조하는 중첩 리소스에 대한 뷰를 디자인하는 방법은 무엇입니까?

resources :magazines do 
    resources :ads 
end 

이 라우팅 AdsController 번호 지수/잡지/뉴스 위크/광고 전화. URL에 magazine_id가 필요합니다. Ads # index에 사용 된 템플릿을 기반으로하는보기를 만드는 방법과 부모 리소스의 컨텍스트가 포함되어야합니다.

예를 들어 광고가있는 모든 상위 리소스에는 해당 광고의 테이블 목록이 있습니다. 그러나 각 잡지에 대한 상용구 정보를 포함하도록보기 상단에보고 싶습니다./magazines/newsweek/ads가 일반 AdsController # 색인으로 직접 이동하면 매거진 모델에서 생성 된 상용구를 포함 할 필요성을 #index보기에서 인식하게하려면 어떻게해야합니까?

다른 모델이 광고 (TVShow has_many : ads)와 관련성이있는 경우 AdsController # index가 다른 모델과 다르게 반응하도록하고 싶습니다.

편집 :

이 내가 MagazinesController를 통과, 과거에 그런 일을했던 방법이다.

resources :magazines 
resources :ads 
get "magazines/:id/ads", :controller=>"companies", :action=>"ads" 

을 그리고 컨트롤러는 다음과 같습니다 :의 내가 별도의 잡지 # 쇼 조치를 원하는 가정 해 봅시다 ... 경로는 것

class MagazinesController < ApplicationController 
    def show 
    ... 
    end 

    def ads 
    ... 
    end 

end 

그리고 잡지 # 광고에 대한 부분을 것 다른 모든 유형의 리소스에서 공유 될 광고 목록

나에게 의미가 있지만 그 경로는 어떻게 든 DRYer가 될 수있는 것처럼 보입니까?

답변

3

매거진 컨트롤러에서 작업해야하는 것처럼 들립니다.

#Magazine_controller 
def show 
    @magazine = Magazine.find(params[:id]) 
    @ads = @magazine.ads 
end 

그런 다음보기에서 광고 모음을 부분적으로 렌더링하십시오. 부분적인 광고는 광고 영역에 저장됩니다. 당신의 veiw에 그래서 :

<%= render :partial => "ads/ad", :collection => @ads %> 

http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

+0

감사합니다 ... 그게 내가 전에 이런 짓을했고 난 그냥 대회에 가서 바로 가기로 그 일을하지 않은 다행 방법이다. 중첩 된 리소스 라우팅을 빌드하는 것이 "레일 방식"이었는지 궁금했다. – Zando

+0

@ Zando를 도와 드리겠습니다. – Brett

관련 문제