2013-04-15 242 views
0

我有一個名爲Contest的模型。 A Contest可以包含Athlete的許多實例。這是在Contest模型定義爲:Rails局部嵌套資源

def athletes 
    team.athletes 
end 

在這種情況下,Contest還定義belongs_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

而且您可以像上面的代碼中那樣呈現它。 (注意代碼中沒有'_',但是在文件名中)