Rails - 获取对象属于其他对象

时间:2017-02-07 18:12:21

标签: ruby-on-rails ruby

如果你帮助我,谢谢。我正在使用rails 4.2。

我有2个型号 - Epoch和Event。每个时代都有很多事件。

我想列出每个时代的事件:

<% @epoches.each do |epoch| %>
    <div><%= epoch.main_title %> : </div>
    <% @events.each do |event| %>
        <div><%= event.title %></div>
    <% end %>
<% end %>

我的epoches_controller.rb看起来像:

def epochline
    @epoches = Epoch.all
    @events = Epoch.find(params[:id]).event.all
end

当我在控制台“Epoch.find(1).events.all”中调用时,它的工作效果令人惊讶,但是Web服务器返回错误 - “无法找到带有'id'=”的Epoch。我究竟做错了什么?如何编辑我的控制器来解决这个问题?

1 个答案:

答案 0 :(得分:3)

删除控制器中的@events = Epoch.find(params[:id]).event.all行,视图应为此。

<% @epoches.each do |epoch| %>
    <div><%= epoch.main_title %> : </div>
    <% epoch.events.each do |event| %>
        <div><%= event.title %></div>
    <% end %>
<% end %>

编辑:您可以通过在控制器中执行@epoches = Epoch.includes(:events)来加载事件。这将缓存时期和事件,也会阻止在您的视图中进行SQL查询