检查表中的NoMethodError#show,undefined method`this&#39;对于#<item:0x007f9e441517d0>

时间:2017-05-25 22:09:00

标签: ruby-on-rails

我正在尝试打印与清单匹配的所有项目。

我在Checklists中显示错误NoMethodError#show,undefined method` each&#39; for #Item:0x007f9e441517d0

不确定是什么导致它,任何帮助将不胜感激。

查看: 应用程序/视图/清单/ show.html.erb

<h1> <%= @checklist.name %> </h1>    
<ul class="item">
        <% @items.each do |item| %>
                <li>
                        <%= item.item_name %>
                        <%= item.eta %>
                        <%= item.complete %>
                </li>
        <% end %>

</ul>

控制器: 应用程序/控制器/ checklists_controller.rb

  def show
        @checklist = Checklist.find(params[:id])
        @items = Item.find_by(checklist_name: @checklist.name)
  end

2 个答案:

答案 0 :(得分:0)

问题应该在这一行:

@items = Item.find_by(checklist_id: @checklist.name)

将其更改为:

@items = Item.find_by(checklist_id: @checklist.id)

答案 1 :(得分:0)

鉴于清单和项目没有关联,并且您将把checklist_id的名称更改为清单名称,那么下面的内容应该对您有用。 Find_by只返回找到的第一条记录。哪里会返回所有记录。

def show
  @checklist = Checklist.find(params[:id])
  @items = Item.where(checklist_name: @checklist.name)
end