我的厨师模型通过chef_id链接到我的膳食模型。我正在显示有关厨师的信息,并且还想显示有关他的膳食的信息。我无法弄清楚在控制器中调用它的正确方法。有什么想法吗?
厨师控制员:
def index
@chefs=Chef.paginate(page: params[:page])
@meals = ????? Cant figure out how to call this
end
Index.html.erb
<div class = 'chef'>
<div class = 'row'>
<% @chefs.each do |chef| %>
<%= render chef %>
<% end %>
</div>
</div>
<%= will_paginate %>
_chef partial
<div class = 'span4'>
<div class = 'chef-box'>
<h2><center><%= link_to chef.name, chef %></center></h2>
<h2><center>"<%= chef.description %>"</center></h2>
<h2><center><%= THIS IS WHERE I WANT TO DISPLAY INFORMATION ON MEALS %></center></h2>
</div>
</div>
答案 0 :(得分:1)
如果您只想访问@meals
,那么您只需获取@chef
的实例:
@meals = @chef.meals
鉴于您已在association
类中定义了Chef
,如下所示:
class Chef < ActiveRecord::Base
has_many :meals
#rest of the code
end
查看有效记录关联here。
所以,这里我只是举例说明如何在视图中使用它,你可能需要纠正它: 在_chef partial
<div class = 'span4'>
<div class = 'chef-box'>
<h2><center><%= link_to chef.name, chef %></center></h2>
<h2><center>"<%= chef.description %>"</center></h2>
<% chef.meals.each do |meal| %>
<h2><center><%= meal.information %></center></h2>
<% end %>
</div>
</div>
您需要在上面的示例代码中调用正确的膳食属性。
答案 1 :(得分:1)
如前所述 - 首先要确保在您的厨师模型中设置关系:
class Chef < ActiveRecord::Base
has_many :meals
end
然后你可以拨打任何Chef.meals
,无论你的控制器是否为:
def index
@chef = Chef.paginate(page: params[:page])
@meals = @chef.meals
end
或者只是在你看来:
<div class = 'span4'>
<div class = 'chef-box'>
<h2><center><%= link_to chef.name, chef %></center></h2>
<h2><center>"<%= chef.description %>"</center></h2>
<h2>Has <%= pluralize(chef.meals.size, 'meal') %></h2>
<% chef.meals.each do |meal| %>
<% meal.name %>
<% end %>
</div>
</div>
值得注意的是 - 由于Chef
是型号名称,因此您应该能够更加干净地呈现_chef.html.erb
:
<div class = 'chef'>
<div class = 'row'>
<%= render @chef %>
</div>
</div>
<%= will_paginate %>
请注意,@chef
与您的控制器匹配是单数,如果您在控制器中设置了什么,您也可以将其传递给<%= render @chefs %>
,它会做分别渲染每位厨师。