未定义的方法`每个'为零:NilClass

时间:2016-02-11 21:11:10

标签: ruby-on-rails ruby

我正在使用ERB创建一个rails应用程序作为我的模板并继续收到此错误:undefined method 'each' for nil:NilClass

我的 event.html.erb 如下所示:

        <% @event.each do |event| %>
            <a href="/registrations/new?level_id=1" class="btn"><%= event.date.strftime("%B %d %Y") %></a>
            <br /><br />
        <% end %>

我的 register_controller.rb 如下所示:

class RegisterController < ApplicationController
    def index
        @event = Event.all
    end 
end

def event
    @event = Event.find_by id: params["id"]
end 

我的 event.rb 型号:

class Event < ActiveRecord::Base
end

我的路线是:get 'register/event/:id' => 'register#event'

当我去/ register / event / 1 /我收到错误消息undefined method 'each' for nil:NilClass。任何帮助将不胜感激。

enter image description here

谢谢!

2 个答案:

答案 0 :(得分:2)

您正在尝试迭代单个对象。您的event.html.erb文件应该只是:

   <a href="/registrations/new?level_id=1" class="btn">
     <%= @event.date.strftime("%B %d %Y") %>
   </a>

此外,看起来DB中没有指定params[:id]

的对象

您的控制器也应如下所示:

class RegisterController < ApplicationController
    def index
        @event = Event.all
    end 

    def event
       @event = Event.find_by id: params[:id]
    end
end

答案 1 :(得分:0)

看起来你要求它迭代单个实例。

可以选择:

<a href="/registrations/new?level_id=1" class="btn">
  <%= @event.date.strftime("%B %d %Y") if @event %>
</a>
<br /><br />
event.html.erb

中的