2011-08-23 16 views
7

nella documentazione Formtastic, si parla di aggiungere una linea per gli errori di base:Formtastic e di base errori

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

E mi lascia perplesso che Formtastic dovrebbe includere il supporto facile per errori specifici sul campo, ma per impostazione predefinita, non offre tali alloggi per base. 1) Sai cosa sono le ragioni per questo?

2) Nella mia situazione mi piacerebbe che tutti i miei moduli includessero errori di base subito dopo l'inizio del modulo. C'è un modo per me di diventare formtastic per farlo con 'default' per tutte le forme?

risposta

3

In Formtastic 2.x, il semantic_errors SEMPRE include: base.

Tuttavia, ho notato in Rails 3 (I am in Rails 3.2) che i messaggi di errore dalle convalide non sono più memorizzati nella base, ma memorizzati per attributo. Ad esempio, con questa classe:

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

vostri @ user.errors oggetto su un fallito creare/aggiornamento sarebbe simile a questa:

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

Se si dovesse rendere il vostro modulo come questo, sarebbe emettere l'errore per l'attributo: name.

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

Questo è un esempio di simulazione, ma si vede cosa intendo.

Purtroppo, non v'è nulla nel codebase Formtastic attualmente che supporta l'opzione "tutto" con Rails 3 (di nuovo, sto usando Rails 3.2)

Problemi correlati