Formtastic и базовые ошибки - PullRequest
       2

Formtastic и базовые ошибки

7 голосов
/ 23 августа 2011

В документах Formtastic говорится о добавлении строки для базовых ошибок:

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

Меня удивляет, что Formtastic включает в себя легкую поддержку специфичных для поля ошибок, но по умолчанию не предлагает таких приспособлений для base. 1) Знаете ли вы, каковы причины этого?

2) В моей ситуации я хотел бы, чтобы все мои формы включали базовые ошибки сразу после начала формы. Есть ли у меня способ заставить formtastic сделать это по умолчанию для всех форм?

Ответы [ 2 ]

12 голосов
/ 19 декабря 2012

Если вы хотите отобразить все базовые ошибки вместе со всеми ошибками вложенных атрибутов:

f.semantic_errors *f.object.errors.keys

Ответ от: https://github.com/gregbell/active_admin/pull/905

3 голосов
/ 28 февраля 2012

В 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 (опять же, я использую Rails 3.2)

...