【问题标题】:how rails determines which form field had an errorrails 如何确定哪个表单字段有错误
【发布时间】:2013-09-29 22:09:09
【问题描述】:

我正在尝试通过 js 在客户端验证我的表单。我的表单中有嵌套字段,我需要知道哪个字段出现错误,因为可以有更多相同类型的字段,例如字体号码。在模型的错误中,它只是说,哪个“类型”的字段有像“person.fon”这样的错误,而不是哪个 fon 字段。我使用了nested_form gem,所以每个字段都有一个唯一的 id

rails 如何准确确定哪个字段有错误?当我使用标准表单验证时,正确的字段包含在错误 div 中。

Rails 就是这样做的

使用@model.errors 我只是得到信息,其中一个字段(fon、电子邮件等)有错误,但不是哪一个。

【问题讨论】:

  • fon 一个模型,你有它的属性嵌套在人的形式?
  • fon 是一个模型,但我只是通过我的 person 模型通过嵌套形式将它弄碎

标签: ruby-on-rails forms validation field


【解决方案1】:

你只需要在你的LOGS中看看,看看什么是不正确的形式吧。 之后你会看到哪一行错了。

【讨论】:

  • 表格正确,我需要准确的字段,但有验证错误
【解决方案2】:

假设您的视图中有实例变量@person,那么您可以使用@person.fon.errors 得到错误

您可以在此处查看从 rails 模型返回的错误对象的文档:http://api.rubyonrails.org/classes/ActiveModel/Errors.html

【讨论】:

  • 我不仅需要错误,我还需要发生错误的表单字段的 id。一些这一定是可能的,因为 rails 用错误 div 包装表单字段
  • @person.fon.errors 将返回错误对象,该对象将包含失败的给定字段的字段和消息。 rails 使用字段名称作为 html 的 id,因此您可以从那里获取 id。我用您从 rails 获得的错误对象的文档链接更新了答案。请阅读并熟悉它。它包含您需要的所有信息。
  • 我认为这对我不起作用。我的表单字段的 ID 如下所示:person_fons_attributes_0_number,person_fons_attributes_1_number,仅在 ID 内的数字不同。现在错误消息包含这样的表单字段::"fons.number"=>["can't be blank"]。
【解决方案3】:

这似乎深埋在ActionView::Helpers::InstanceTag 中。不过,还不确定如何有效地使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-19
    • 1970-01-01
    相关资源
    最近更新 更多