Ruby 如果用户在随机URL中键入NoMethodError
当用户在网站url中键入任意随机字符串时,即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,然后呈现页面 有哪些解决方案可以消除此错误?是否可以
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正在寻找一个不在数据库中的用户。如果发生这种情况,我如何将用户重定向到主页?谢谢!工作起来很有魅力!