形式和基本错误

时间:2011-08-23 10:38:52

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

在Formtastic文档中,它讨论了为基本错误添加一行:

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

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

2)在我的情况下,我希望我的所有表单在表单开始后立即包含基本错误。对于所有形式,我有没有办法通过'默认'来形成这种形式?

2 个答案:

答案 0 :(得分:12)

如果要显示所有基本错误以及嵌套属性的任何和所有错误:

f.semantic_errors *f.object.errors.keys

回答: https://github.com/gregbell/active_admin/pull/905

答案 1 :(得分:3)

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

但是,我注意到在Rails 3中(我在Rails 3.2中),来自验证的错误消息不再存储到base,而是存储在属性中。例如,使用此类:

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的“all”选项(同样,我使用的是Rails 3.2)