【问题标题】:Rails partial for a nested resource嵌套资源的 Rails 部分
【发布时间】:2013-04-15 00:57:35
【问题描述】:

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

def athletes
  team.athletes
end

在这种情况下,Contest 也定义了belongs_to :team

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

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

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

有没有更好的方法来定义比赛运动员之间的关系并在比赛视图中呈现部分?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    这里有一些未经测试的代码:

    # 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 %>
    

    您可以使用rails的has_many :through,而不是自己定义Contest#athletes

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

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

    【讨论】:

      猜你喜欢
      • 2015-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-05
      相关资源
      最近更新 更多