【问题标题】:Formtastic and base errors格式错误和基本错误
【发布时间】:2011-08-23 10:38:51
【问题描述】:

在 Formtastic 文档中,它谈到为基本错误添加一行:

<%= semantic_form_for @record do |form| %>
  <%= form.semantic_errors :base %>
  ...main body of form...
<% end %>

让我感到困惑的是,Formtastic 会毫不费力地支持特定于字段的错误,但默认情况下,它不为 base 提供此类调整。 1) 你知道这是什么原因吗?

2) 在我的情况下,我希望我的所有表单在表单开始后立即包含基本错误。有没有办法让我通过“默认”为所有表单设置格式?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 formtastic


    【解决方案1】:

    如果您想显示所有基本错误以及嵌套属性的所有错误:

    f.semantic_errors *f.object.errors.keys

    答案来自: https://github.com/gregbell/active_admin/pull/905

    【讨论】:

      【解决方案2】:

      在 Formtastic 2.x 中,semantic_errors 总是包含 :base。

      但是,我注意到在 Rails 3(我在 Rails 3.2)中,来自验证的错误消息不再存储到基础,而是按属性存储。例如,对于这个类:

      class User < ActiveRecord::Base
        # has a name attribute
        validates :name, :presence => true, :uniqueness => true
      end
      

      创建/更新失败时您的 @user.errors 对象如下所示:

      #<ActiveModel::Errors:0x0000000 
        @base=#<User id:1, name: "">, 
        @messages={:name => ["can't be blank"]}>
      

      如果您要这样制作表单,它会输出 :name 属性的错误。

      <%= semantic_form_for @user do |form| %>
        <%= form.semantic_errors :name %>
        ...main body of form...
      <% end %>
      

      这是一个模拟示例,但你明白我的意思。

      不幸的是,目前 formtastic 代码库中没有任何内容支持 Rails 3 的“全部”选项(同样,我使用的是 Rails 3.2)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 2021-08-07
        • 1970-01-01
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        相关资源
        最近更新 更多