[英]undefined method `map' for nil:NilClass in render action error flash
我有一个使用Rails模型FlsCenter
的rails表单, FlsCenter
字母顺序命令它们在下拉列表中显示。 当表单的所有字段均未填写并且提交表单时,页面将显示500服务器错误,其中显示以下Rails错误:
undefined method `map' for nil:NilClass
map
功能在以下视图代码中:
= f.select(:fls_center, @fls_centers.map{|p| [p.name, p.id]}, prompt: "Select a Program Center", selected:@school_application.fls_center)
@fls_centers
在我的SchoolApplicationController
的new
方法中定义的SchoolApplicationController
:
@fls_centers = FlsCenter.order('name ASC')
这是SchoolApplicationsController
中的相关控制器方法
def create
@school_application = SchoolApplication.new(school_application_params)
if @school_application.save_with_payment
redirect_to pay_path(id: @school_application.id)
else
@school_application.errors.full_messages.each do |msg|
flash.now[:error] = msg
end
render action: "new"
end
end
这是我的new
方法:
def new
if application_params
@school_application = SchoolApplication.new(application_params)
else
@school_application = SchoolApplication.new()
end
Rails.logger.debug(@fls_centers)
@fls_centers = FlsCenter.order('name ASC')
end
我可以想象的唯一出问题的是render action: "new"
不执行new
方法中的变量实例化。 我不知道如何消除这种情况。 谢谢
您正在执行Rails.logger.debug(@fls_centers)
定义之前@fls_centers
,所以更改如下所示:
def new
@fls_centers = FlsCenter.order('name ASC')
if application_params
@school_application = SchoolApplication.new(application_params)
else
@school_application = SchoolApplication.new()
end
Rails.logger.debug(@fls_centers)
end
希望能帮助到你!
你猜对了。 调用时实际的new
方法未执行
render action: "new"
您将不得不再次调用变量实例化:
def create
@school_application = SchoolApplication.new(school_application_params)
if @school_application.save_with_payment
redirect_to pay_path(id: @school_application.id)
else
@school_application.errors.full_messages.each do |msg|
flash.now[:error] = msg
end
@fls_centers = FlsCenter.order('name ASC')
render action: "new"
end
end
如果它们很多,最好在一个方法中重构它们,然后在new
方法中以及在render
调用之前调用该方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.