Rails アプリケーションで CanCan を使用しようとしています。以前に他のプロジェクトで使用したのと同じチュートリアルに従い、これを機能させました。私の次の設定は次のとおりです。
アプリケーションにアクセスしようとすると、与えられたようです
undefined method `role?' for nil:NilClass
私の次の行を指していますapplication/layout.html.erb
<% if @user.role? :administrator %>
Rails アプリケーションで CanCan を使用しようとしています。以前に他のプロジェクトで使用したのと同じチュートリアルに従い、これを機能させました。私の次の設定は次のとおりです。
アプリケーションにアクセスしようとすると、与えられたようです
undefined method `role?' for nil:NilClass
私の次の行を指していますapplication/layout.html.erb
<% if @user.role? :administrator %>
問題は@user、すべてのコントローラー アクションで常に定義されているわけではありませんが、レイアウトはすべてのコントローラー アクションでレンダリングされているため、@usernull になる場合があります。これを修正するには、次のように if ステートメントで @user が定義されていることを確認します。
<% if @user && @user.role?(:administrator) %>
問題は、@user メソッドが nil のように見えることです。cancan のドキュメントによると、current_userメソッドが存在することが期待されます。
また、あなたがコメントアウトしたことがわかります
before_filter :authenticate_user! 、現在のユーザーを作成できるように有効にします。
load_and_authorize_resourceまた、cancan が正しく機能するように、 を有効にします。