0

Rails アプリケーションで CanCan を使用しようとしています。以前に他のプロジェクトで使用したのと同じチュートリアルに従い、これを機能させました。私の次の設定は次のとおりです。

アプリケーションにアクセスしようとすると、与えられたようです

undefined method `role?' for nil:NilClass

私の次の行を指していますapplication/layout.html.erb

  <% if @user.role? :administrator %>
4

2 に答える 2

2

問題は@user、すべてのコントローラー アクションで常に定義されているわけではありませんが、レイアウトはすべてのコントローラー アクションでレンダリングされているため、@usernull になる場合があります。これを修正するには、次のように if ステートメントで @user が定義されていることを確認します。

<% if @user && @user.role?(:administrator) %>
于 2013-02-11T03:36:26.140 に答える
0

問題は、@user メソッドが nil のように見えることです。cancan のドキュメントによると、current_userメソッドが存在することが期待されます。

また、あなたがコメントアウトしたことがわかります

before_filter :authenticate_user! 、現在のユーザーを作成できるように有効にします。

load_and_authorize_resourceまた、cancan が正しく機能するように、 を有効にします。

于 2013-02-11T03:56:26.167 に答える