私は2つのセクションにウェブサイトを分割しようとしています。 1つはアプリケーションレイアウトを使用し、もう1つは管理レイアウトを使用する必要があります。次のように私のapplication.rbでは、私は、関数を作成しました:Ruby on Rails - レンダリングのレイアウト
def admin_layout
if current_user.is_able_to('siteadmin')
render :layout => 'admin'
else
render :layout => 'application'
end
end
をそして、それは、1つまたは他のかもしれないのコントローラで私はこれが(ここで、そのわずか数ページのため正常に動作します
before_filter :admin_layout
を置きますテキスト)ですが、他の人には古典的なエラーが表示されます:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each
私には何が欠けているのでしょうか?レンダリングとレイアウトを適切に使用するにはどうすればよいですか?
? current_user.is_able_to( 'siteadmin') ログインしていないと、current_userがnilになることがあります。 –
@Reuben、それは良い点です。追加されました。 – molf
私はその行の前に他のチェックをして、ユーザーがログインしているかどうかをチェックしています。それは驚くべきことですが、レイアウト後に関数を呼び出すことは考えられませんでした。シンプルでとても役に立ちました。ありがとうございました。 – RyanJM