2017-09-13 16 views
0

Ruby on railsでこのエラーが発生しました。私はタイトルと説明(文字列とテキスト)、ルビーの宝石deviseとのユーザーセッションとadd_category_id_to_stylesでスタイルに追加したカテゴリと呼ばれるモデルを持っているスタイルと呼ばれる足場を作った。 私はスタイルコントローラにStylesControllerのNoMethodError#新しい定義されていないスタイルのnilクラス:NilClass

def new 
@style = current_user.styles.build 
end 

def new 
@style = Style.new 
end 

を変更し、今では私にnilのための未定義のメソッド 'スタイル' を与える:NillClassを。なぜ私にこのエラーを与えているのか分かっていますか?

+0

あなたがログインするまで、current_userはnullになります。 –

+0

私は条件を作るべきですか? Thanks – marcos

+0

この場合、current_userはnullです。これはあなたがログインしていないことを意味します。はい、 'current_user.present? 'をチェックすることができます。 –

答えて

0

Deviseは、#user_signed_in?という方法を提供して、現在のユーザーがサインインしているかどうかを確認します。はいの場合、#current_userにアクセスできます。だから、あなたが持つことができます。もちろん

def new 
    @style = user_signed_in? ? current_user.styles.build : Style.new 
end 

をあなたも直接current_user.present?を確認することができますが、私は#user_signed_in?の意思を伝え、より良いと思います。

関連する問題