Ruby 如果用户在随机URL中键入NoMethodError

Ruby 如果用户在随机URL中键入NoMethodError,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,当用户在网站url中键入任意随机字符串时,即localhost:3000/rfgfgh或localhost:3000/gfgfgf/fhh会抛出此随机错误 我知道它为什么会抛出这个错误,因为我正在检查用户是否是视图中的contracter,以及他们是否显示特定的contracter代码。我还使用Slug来显示特定于contracter的内容。如果用户转到localhost:3000/contracter,它将检查slug contracter,然后呈现页面 有哪些解决方案可以消除此错误?是否可以

当用户在网站url中键入任意随机字符串时,即
localhost:3000/rfgfgh
localhost:3000/gfgfgf/fhh
会抛出此随机错误

我知道它为什么会抛出这个错误,因为我正在检查用户是否是视图中的
contracter
,以及他们是否显示特定的contracter代码。我还使用Slug来显示特定于contracter的内容。如果用户转到
localhost:3000/contracter
,它将检查slug contracter,然后呈现页面

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

NoMethodError in Users#show

undefined method `contractor?' for nil:NilClass

1: <% if @user.contractor? %>
2:  <% title "#{@user.name}" %>
NoMethodError在用户中#显示
未定义的方法“承包商”,适用于nil:NilClass
1: 
2:  

根据您看到的错误,这意味着您正在调用类似于
@myuser.contracter?
,其中
@myuser
为零

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

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

@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

您没有发布足够的信息来确定问题所在。但是,这意味着您正在调用
myuser.contracter?
,其中
myuser
为零。也许您还没有初始化它,或者您正在寻找一个不存在的用户。第二种选择是rails正在寻找一个不在数据库中的用户。如果发生这种情况,我如何将用户重定向到主页?谢谢!工作起来很有魅力!