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

在视图中添加下面提到的代码,如果您的页面显示成功(没有错误消息)并且没有a,select那么您知道@categories 被设置为nil。

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

编辑

也在@categoriescreate方法中设置

于 2014-02-28T18:09:20.420 回答