形式和基本错误

ssc*_*rus 8 ruby-on-rails formtastic ruby-on-rails-3

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

<%= semantic_form_for @record do |form| %>
  <%= form.semantic_errors :base %>
  ...main body of form...
<% end %>
Run Code Online (Sandbox Code Playgroud)

令我困惑的是,Formtastic将包括对特定领域错误的毫不费力的支持,但默认情况下,它没有提供这样的调整base.1)你知道这是什么原因吗?

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

Joh*_*ian 13

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

f.semantic_errors *f.object.errors.keys

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


小智 3

在 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
Run Code Online (Sandbox Code Playgroud)

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

#<ActiveModel::Errors:0x0000000 
  @base=#<User id:1, name: "">, 
  @messages={:name => ["can't be blank"]}>
Run Code Online (Sandbox Code Playgroud)

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

<%= semantic_form_for @user do |form| %>
  <%= form.semantic_errors :name %>
  ...main body of form...
<% end %>
Run Code Online (Sandbox Code Playgroud)

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

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