2012-02-10 7 views
0

条件に基づいてビュー+レイアウトをレンダリングしようとしています。次のコードはうまくいくようですが、@objectsにアクセスできなくなります。私はProfilesControllerメソッドでこのコードを呼び出します。初心者:条件に基づいて異なるビューとレイアウトを描画する@オブジェクトへのアクセスが遅い

@profiles = Profile.where(:user_id => current_user.id).first  

if @profile.nil? == true 

    render :view => "show", 
     :layout => "application" 
else 
    render :template => "profiles/my_profile", 
     :layout => "profiles" 
end 

は、出力を提供します:

undefined method `profiles' for nil:NilClass 

どのように1は、条件に基づいてレンダリングすることができ、まだビューのレイアウトを設定する前のセット@objects@profilesに、この場合のアクセス)

+1

エラーは、 'nil'オブジェクトに対して' .profiles'メソッドを呼び出すことです。トレースに行番号があるはずです。それは何のオブジェクトですか、そしてそれはどこに初期化されていますか? – Baldrick

+0

@profileオブジェクトは空であるため、else部分の下のレンダリングがこれを破るようです。 – Rubytastic

答えて

0

を保存するには、あります移動する方法ではなく、レールの方法ではなく、可能であっても助言を受けていませんでした。コントローラーアクションのレイアウトを変更し、ショーの一部分に正しいコードをレンダリングして、問題を解決しました。