我有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。我究竟做错了什么?如何编辑我的控制器来解决这个问题?
答案 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查询