当前位置:  开发笔记 > 编程语言 > 正文

选择标记的Rails验证错误

如何解决《选择标记的Rails验证错误》经验,为你挑选了1个好方法。

我刚刚使用带有Rails的脚手架设置了一些基本模型,我编辑了视图,以便我从文本字段和选择框中获取输入.以下是一些代码段:

form_for(@town) do |f|
f.text_field :name
.
.
f.select :county_id, @counties.map{|c| [c.name, c.id]}
.
.
end

对文本字段使用验证方法"validates_presence_of"并且在选择框上没有验证我可以输入值并成功写入数据库.当我尝试通过不在文本字段中输入任何内容来测试验证时,我得到一个带有以下消息的NoMethodError

You have a nil object when you didn't expect it! You might have expected an instance of Array. The error occurred while evaluating nil.map

注意:选择框上没有验证

如果我注释掉"validate_presence_of"行,我可以将空白数据写入数据库,没有任何问题.但是,如果我为文本字段编写验证代码并且它导致整个表单对象显然变为零...... Rails的验证是否会导致此问题?

任何想法/意见都非常感谢.我使用Rails 2.3.4



1> Phil Ross..:

您还没有发布的堆栈跟踪,但我假设当你调用错误发生map@counties.

您的控制器可能在处理表单时有两个操作.一个(new或者edit)显示表单并响应获取请求.另一个(或者)create或者update创建或更新模型.这会响应post或put请求,如果成功则重定向,new或者edit在有验证错误时(如果save失败)呈现或动作.

我希望你的newedit行动有一些代码分配给你@counties.您createupdate操作还需要@countiessave失败时进行分配,以便在视图中可用.

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有