我有一个名为Contest
的模型。 Contest
可以包含许多Athlete
个实例。这在Contest
模型中定义为:
def athletes
team.athletes
end
在这种情况下,Contest
也定义belongs_to :team
。
在比赛视图中,我想显示一个循环通过所有运动员的部分。我试过这样的事情:
<%= render :partial => 'athletes', :collection => @contest.athletes %>
它将partial列为缺失部分,因为它正在检查顶级视图/应用程序目录。
有没有更好的方法来定义我的竞赛之间的关系&lt; - &gt;运动员并在比赛视图中呈现部分内容?
答案 0 :(得分: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
。
使用partial时,您甚至可以定义存储partial的路径。
例如,如果您的比赛在特殊情况下呈现给运动员,您可能希望将该部分存储在此位置:app/views/contests/_athlete.html.erb
你可以在上面的代码中渲染它。 (注意!代码中没有'_',但在文件名中)