2016-12-15 6 views
0

フォームを送信するたびに、私はこのエラーを受け取ります:undefined method `each' for nil:NilClass。すべてが正しければ問題なくフォームを送信できますが、欠落しているものがあるとエラーが発生します。エラーは、この行に私を送信します。Ruby on rails - 未定義メソッド `each 'for nil:NilClass

ビュー/ユーザー/ new.html.haml

- @subscriptions.each do |fbs| 
    = fb.radio_button :subscription_id, fbs.id, class: 'radiobtn', required: true 

コントローラ/ users_controller.rb

def new 
    @user = Users::Business.new 
    @subscriptions = Businesses::Subscription.all 
end 

def create 
    @user = Users::Business.new(user_params) 

    if @user.save 
    sign_in(@user) 
    else 
    render :new 
    end 
end 
+0

フォームを送信すると、コントローラの 'create'アクションが呼び出されます。どのように見えますか? 'render 'を' '' '@ subscriptions''を設定しないと思っています。 – Stefan

+0

railsコンソールでTopLevel定数に関する推奨されない警告がありましたか?はい、@subscriptions = :: Businesses :: Subscription.allを使用してみてください – cubbiu

+0

編集ありがとうございます。私が思ったように、 'create'の中から' new'テンプレートをレンダリングしますが、テンプレートの必要に応じて '@ subscriptions'を設定しません。 – Stefan

答えて

2

はあまりにもアクションを作成中にサブスクリプションを割り当てます。

0

値がないので、それが起こっているので持続しましたそのモデル。 あなたは

$rails console 
> Businesses::Subscription.count 

、同じようrails console にデータを確認することができますし、データが存在しないことを見れば、あなたはNULL値をチェックし、それを処理するためにif ... endブロックを書き込むことができます。

before_filter :set_subscriptions, only: %w(new create) #for edit and update if needed 

private 
def set_subscriptions 
    @subscriptions = Businesses::Subscription.all 
end 

または保存が失敗しているとあなたがnewフォームを再レンダリング後createアクションに直接@subscriptions = Businesses::Subscription.allを追加します。

+0

'Businesses :: Subscription.all'は' nil'を返しません。 – Stefan

+0

エラーログを教えていただけますか? –

+0

私はステファンに同意します。空の関係を返します。 – cubbiu

関連する問題