提交具有无关验证的collection_select时出现Rails奇怪错误

时间:2014-02-28 17:16:36

标签: ruby-on-rails-4 mongoid collection-select

我有一个正常保存所有属性的工作表单,包括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函数无法传递某些内容,或者当它尝试重绘错误页面时无法映射选择?

请协助。同样,我可以让它工作,但我宁愿不在视图中放置方法调用。

1 个答案:

答案 0 :(得分: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

修改

还在create方法

中设置@categories