0

当用户在网站 url 中输入任何随机字符串时,即localhost:3000/rfgfghlocalhost:3000/gfgfgf/fhh引发此随机错误。

我理解为什么它会引发此错误,因为我正在检查用户是否contracter在视图中以及它们是否显示特定的承包商代码。我还使用 slugs 来显示承包商特定的内容。如果用户去localhost:3000/contracter它检查蛞蝓承包商,然后呈现页面。

有哪些解决方案可以消除此错误?是否可以将用户重定向到主页?

NoMethodError in Users#show

undefined method `contractor?' for nil:NilClass

1: <% if @user.contractor? %>
2:  <% title "#{@user.name}" %>
4

1 回答 1

2

根据您看到的错误,这意味着您正在调用类似的东西@myuser.contracter?,其中@myuser是 nil。

如果用户不在数据库中,它将找不到用户,并将 nil 放入@myuser对象中。

要将用户重定向到主页,只需检查控制器中的变量是否为零,并在必要时重定向,例如:

@myuser = User.find(params[:id]) # or params[:username]
if @myuser.nil? # check if nil
  redirect_to root_url, :notice => "User does not exist!" # redirect to home page
end
于 2012-09-04T06:44:07.617 回答