0

ユーザーがウェブサイトの URL にランダムな文字列を入力すると、localhost:3000/rfgfghこのlocalhost:3000/gfgfgf/fhhランダムなエラーがスローされます。

contracterユーザーがビューにいるかどうか、およびそれらが特定の契約者コードを表示しているかどうかを確認しているため、このエラーがスローされる理由を理解しています。また、請負業者固有のコンテンツを表示するためにスラッグを使用しています。ユーザーがlocalhost:3000/contracterアクセスすると、slug 契約者がチェックされ、ページがレンダリングされます。

このエラーを取り除くための解決策は何ですか? ユーザーをホームページにリダイレクトすることは可能ですか?

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

ユーザーがデータベースにない場合、ユーザーは見つからず、@myuserオブジェクトに nil が設定されます。

ユーザーをホームページにリダイレクトするには、コントローラーで変数が 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
于 2012-09-04T06:44:07.617 に答える