捕获各个表单的错误
我试图捕获单个表单的validation错误,因为我在一个页面上有很多。
我使用object_id
为每个表单提供了自己唯一的id
{ id: object.object_id.to_s } do |f| %>
但如果我这样做以捕获错误,我的所有表单上都会出现相同的错误消息
# errors
我试过了
但我明白了
undefined method `errors' for 59187740:Fixnum
有没有办法解决这个问题
谢谢
编辑
我刚刚注意到,当页面重新加载时validation失败时,表单ID会发生变化,这就解释了为什么无法找到该对象的原因。
我如何保持表单ID相同?
如果真的取决于你想对错误做什么:
您想为每个表单显示它们:
<%= form_for some_object, do |f1| %> <%= f1.error_messages %> <%= # f1 magic %> <%= form_for other_object, do |f2| %> <%= f2.error_messages %> <%= # f2 magic %>
您想要为每个对象访问它们:
只需调用object.errors
: some_object.errors
什么不适合你:
在object
上调用object_id
访问其id
是一个数字( FixNum
)。 您正在尝试调用方法/访问不存在的FixNum
上的属性。
您只需要一些表单的持久ID
我假设您的object
来自数据库并且已经有ID。 那么你为什么不使用object.id
呢? 每次Rails从DB为您创建一个ActiveRecord对象时,该对象将获得一个新的object_id
。 因此,由于内存中有新object
,因此ID不会保持不变是合乎逻辑的。 在这里阅读更多相关信息: