我正在尝试在rails上的index.html.erb中实现以下代码,并且服务器上出现以下错误:
用户#index中的NoMethodError 当你没想到它时,你有一个零对象! 您可能期望一个Array实例。 评估nil.each时发生错误
提取的来源(第2行附近)
<div id="users">
<% @users.each do |user| %>
<div id="user">
<% if user.username != current_user.username %>
<%=h user.username %>
<%= link_to "Add Friend", friendships_path(:friend_id => user), :method => :post %>
<% end %>
</div>
<% end %>
</div>
控制器代码:
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
session[:user_id] = @user.id
redirect_to root_url, :notice => "Thank you for signing up! You are now logged in."
else
render :action => 'new'
end
end
end
def edit
@user = current_user
end
def update
@user = current_user
if @user.update_attributes(params[:user])
redirect_to root_url, :notice => "Your profile has been updated."
else
render :action => 'edit'
end
end
答案 0 :(得分:1)
你可以通过rails获得很多。
解释:
该方法确实存在,因此错误消息令人困惑。问题是变量(@users)没有任何值。它是零而不是有效的对象。因此,当您尝试在'nil'上调用该方法时,您会收到该错误消息。
因此请查看您的控制器并确保查询,例如@users = User.all实际上返回记录,你也可以在控制台(脚本/控制台或脚本/ rails控制台)中检查它
答案 1 :(得分:0)
你在@users变量上调用.each,但是@users是nil。
如果您需要其他帮助,请发布您的控制器代码。
如果您想更正此视图,可以执行以下操作:
<% if @users %>
<div id="users">
<% @users.each do |user| %>
<div id="user">
<% if user.username != current_user.username %>
<%=h user.username %>
<%= link_to "Add Friend", friendships_path(:friend_id => user), :method => :post %>
<% end %>
</div>
<% end %>
</div>
<% end %>