在Formtastic文档中,它讨论了为基本错误添加一行:
<%= semantic_form_for @record do |form| %>
<%= form.semantic_errors :base %>
...main body of form...
<% end %>
令我感到困惑的是,Formtastic将包含对特定字段错误的毫不费力的支持,但默认情况下,它不为base
提供此类调整。 1)你知道原因是什么吗?
2)在我的情况下,我希望我的所有表单在表单开始后立即包含基本错误。对于所有形式,我有没有办法通过'默认'来形成这种形式?
答案 0 :(得分:12)
如果要显示所有基本错误以及嵌套属性的任何和所有错误:
f.semantic_errors *f.object.errors.keys
答案 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)