0

我有一个名为Contest. AContest可以包含 的许多实例Athlete。这在Contest模型中定义为:

def athletes
  team.athletes
end

在这种情况下,Contest还定义belongs_to :team.

在比赛视图中,我想显示一个循环遍历所有运动员的部分。我试过这样的事情:

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

它将部分列为丢失,因为它正在检查顶级视图/应用程序目录。

有没有更好的方法来定义我的 Contests <-> Athletes 之间的关系并在 Contest 视图中呈现部分?

4

1 回答 1

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 :throughRails的而不是自己定义。

当您使用部分时,您甚至可以定义存储部分的路径。例如,如果您的比赛在特殊情况下呈现为运动员,您可能希望将 parial 存储在此位置:app/views/contests/_athlete.html.erb

你可以像上面的代码一样渲染它。(注意!代码中没有“_”,但在文件名中)

于 2013-04-15T01:13:24.287 回答