0

を含むすべての属性を適切に保存する作業フォームがありますcollection_select。ただし、追加validates :title, presence: trueして送信しようとすると、

undefined method 'map' for nil:NilClass

私の新しい行動:

class ItemsController < ApplicationController
  def new
    @item = Item.new
    @categories = Question.editable_by(current_user)
    respond_to do |format|
      format.html { render :layout => true}
      format.json { render :json => @item  }
      format.js
    end

  end
end

ビューはitems\_form.html.haml

動作しません

= f.collection_select :question_id, @categories, :_id, :iqs_item

作品

= f.collection_select :question_id, Question.editable_by(current_user), :_id, :iqs_item

@categoriesこれは、コントローラーからビューにオブジェクトを追加すると機能します。ビューの関数に何かが渡されないerrorか、エラーでページを再描画しようとしたときに選択をマップできないと思いますか??

手伝ってください。繰り返しますが、動作させることはできますが、メソッド呼び出しをビューに入れたくありません。

4

1 に答える 1

1

= f.collection_select :question_id, @categories, :_id, :iqs_item

undefined method 'map' for nil:NilClassにコレクションが指定されている場合、つまり@categoriesが として設定されている場合、エラーが発生しnilます。

以下のコードをビューに追加します。ページが正常に (エラー メッセージなしで) 表示selectされ、@categories が nil として設定されていることがわかります。

- unless @categories.nil?
    = f.collection_select :question_id, @categories, :_id, :iqs_item

編集

@categoriescreateメソッドにも設定

于 2014-02-28T18:09:20.420 に答える