2011-08-23 9 views
7

En los documentos Formtastic, se habla de la adición de una línea de errores de base:errores Formtastic y base

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

Me desconcierta que Formtastic incluiría soporte sin esfuerzo para errores específicos de campo pero por defecto, no ofrece tales alojamientos para base. 1) ¿Sabes cuáles son las razones para esto?

2) En mi situación, me gustaría que todos mis formularios incluyan errores base justo después de que comience el formulario. ¿Hay alguna manera de que formule formtastic para hacerlo por 'predeterminado' para todas las formas?

Respuesta

3

En Formtastic 2.x, los semántica_errores SIEMPRE incluye: base.

Sin embargo, he notado en Rails 3 (I am in Rails 3.2) que los mensajes de error de las validaciones ya no se almacenan en la base, sino que se almacenan por atributo. Por ejemplo, con esta clase:

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

su @ user.errors objeto en un/actualización fallida crear sería el siguiente:

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

Si se va a hacer que su forma como este, que lo haría muestra el error para el atributo: nombre.

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

Este es un ejemplo falso, pero ya ves lo que quiero decir.

Por desgracia, no hay nada en el código base Formtastic actualmente que apoya un "todo" opción con Rails 3 (de nuevo, estoy usando Rails 3.2)

Cuestiones relacionadas