我在'each'上收到一个未定义的方法错误为零:NilClass。
模板:
<th>name></th>
<th>Comment</th>
<% @guests.each do |guest| %>
<tr>
<td><%= guest.name %></td>
<td><%= guest.comment %></td>
</tr>
<% end %>
控制器:
class GuestsController < ApplicationController
def index
@guest = Guest.all
end
def show
@guest = Guest.find(params[:id])
end
def new
end
def create
@guest = Guest.new(article_params)
@guest.save
redirect_to @guest
end
private
def article_params
params.require(:guest).permit(:name, :email, :doctor, :Captain, :comment )
end
end
答案 0 :(得分:3)
您的#index
方法中有拼写错误,请将@guest
替换为@guests
。
像:
def index
@guests = Guest.all
end
答案 1 :(得分:0)
在您使用index
的{{1}}方法中,在视图文件中,您已指定@guest = Guest.all
。因此,您应该在视图文件中将<% @guests.each do |guest| %>
更改为@guests
。
改变这一点,
@guest
视图文件中的
答案 2 :(得分:0)
你在@guests
的所有方法中都没有@guest
。这就是@guests
具有nill值的原因,您还没有定义它。
答案 3 :(得分:0)
更改您的代码是这样的:
def index
@guests = Guest.all
end
您在视图中使用@guests但在控制器中它是@guest
答案 4 :(得分:0)
未定义的方法`每个&#39;为零:NilClass
这是错误的说明,您尝试使用each
对象的nil
方法,即您@guests
中没有任何定义为index
的内容行动。
您实际上是在尝试访问视图中索引操作的实例变量@guest
。
所以你需要修正错字:
<% @guest.each do |guest| %> # you wrote @guests
建议:由于您要获取所有来宾,因此您应该将实例变量名称从@guest更改为@guests更合适。在这种情况下,您不必更改视图代码。它会按原样运作。
def index
@guests = Guest.all
end