2013-04-15 3 views
0

Contest이라는 모델이 있습니다. Contest에는 Athlete의 많은 인스턴스를 포함 할 수 있습니다. 이것은로 Contest 모델에 정의되어있다 :이 경우중첩 된 리소스의 부분 레일

def athletes 
    team.athletes 
end 

, Contestbelongs_to :team을 정의합니다.

컨테스트보기에서 모든 선수를 반복하는 부분을 표시하고 싶습니다.

<%= render :partial => 'athletes', :collection => @contest.athletes %>

그것이 최상위 뷰/응용 프로그램 디렉토리에 확인되기 때문에 누락 된 부분을 나열 나는 이런 식으로 뭔가를 시도했다.

콘테스트 < -> 선수와의 내 관계를 정의하고 컨테스트보기에서 부분을 렌더링하는 더 좋은 방법이 있습니까? 당신을 위해 몇 가지 테스트되지 않은 코드

답변

0

:

# Models 
class Team < ActiveRecord::Base 
    has_many :athletes 

class Contest < ActiveRecord::Base 
    belongs_to :team 
    has_many :athletes, :through => team 
end 

# View 
<%= render(@contest.athletes) %> 

# or 
<%= render :partial => "contest/athlete", :collection => @contest.athletes %> 

대신 혼자서 Contest#athletes을 정의하는, 당신은 레일의 has_many :through를 사용할 수 있습니다.

부분을 사용할 때 부분이 저장된 경로를 정의 할 수도 있습니다. 예를 들어, 콘테스트가 특별한 경우에 선수로 렌더링되는 경우이 위치에 파티클을 저장하려는 경우이 위치에 파티클을 저장하는 것이 좋습니다. app/views/contests/_athlete.html.erb

위 코드 에서처럼 렌더링 할 수 있습니다. (참고! 코드에는 '_'가 없지만 파일 이름에는)