我有一个正常保存所有属性的工作表单,包括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
函数无法传递某些内容,或者当它尝试重绘错误页面时无法映射选择?
请协助。同样,我可以让它工作,但我宁愿不在视图中放置方法调用。
答案 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