gpt4 book ai didi

ruby-on-rails - 选择标签的 Rails 验证错误

转载 作者:行者123 更新时间:2023-12-02 07:54:20 26 4
gpt4 key购买 nike

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


form_for(@town) do |f|<br/>
f.text_field :name<br/>
.<br/>
.<br/>
f.select :county_id, @counties.map{|c| [c.name, c.id]}<br/>
.<br/>
.<br/>
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”行,我可以毫无问题地将空白数据写入数据库。但是,如果我为文本字段编写验证代码,它显然会导致整个表单对象变为 nil ...是 Rails 的验证导致的吗?

非常感谢任何想法/评论。我正在使用 Rails 2.3.4

最佳答案

您还没有发布堆栈跟踪,但我假设错误是在您调用 @counties 上的 map 时发生的。

您的 Controller 中可能有两个操作处理表单。一个(newedit)显示表单并响应 get 请求。另一个(createupdate)创建或更新模型。这会响应 post 或 put 请求,如果成功则重定向,或者在出现验证错误时呈现 newedit 操作(如果 save 失败).

我希望您的 newedit 操作有一些分配给 @counties 的代码。当 save 失败时,您的 createupdate 操作还需要分配 @counties 以便它在查看。

关于ruby-on-rails - 选择标签的 Rails 验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1793595/

26 4 0