Avrei bisogno di personalizzare i nomi dei campi che compaiono nel
messaggio error_messages_for. Ad esempio il campo “name” deve essere
visualizzato come “argomento”.
In pratica mi serve una specie di “alias” per il nome del campo.
E’ possibile impostarlo direttamente nel metodo validate_xxx (così come
per il messaggio di errore :message) ?
Per validazioni fatte da me forse saprei anche riuscirci (tramite
parametro), ma qualcuno sa come farlo per i metodi classici ??
(validate_presence_of, validate_uniqueness_of, etc…)
hai provato a vedere error_message_on su http://api.rubyonrails.org
e’ specifico per ogni singolo field, e per modificare i messaggi
devi andare nel modello ed usare :msg nei validates oppure modificare
l’hash con tutti gli errori di validates standard di rails
hai provato a vedere error_message_on su http://api.rubyonrails.org
e’ specifico per ogni singolo field, e per modificare i messaggi
devi andare nel modello ed usare :msg nei validates oppure modificare
l’hash con tutti gli errori di validates standard di rails
Si ma io devo farlo per validate_presence_of, quindi non saprei proprio
come fare… Devo fare un overload del metodo validate_presence_of ?
On Thu, 2008-11-27 at 17:27 +0100, Davide S. wrote:
Claudio F. wrote:
hai provato a vedere error_message_on su http://api.rubyonrails.org
e’ specifico per ogni singolo field, e per modificare i messaggi
devi andare nel modello ed usare :msg nei validates oppure modificare
l’hash con tutti gli errori di validates standard di rails
Si ma io devo farlo per validate_presence_of, quindi non saprei proprio
come fare… Devo fare un overload del metodo validate_presence_of ?
mettiamo caso che ci sia una tabella products in database, quindi avrai
un modello product.rb con all’interno il controllo sulla obbligatorieta’
per la colonna name che pero’ tu visualizzi come ‘argomento’:
class Product < ActiveRecord::Base
validates_presence_of :name, :message => “Campo…obbligatorio”
end
nella file rhtml della form avrai l’input field per il campo name:
Argomento: <%= text_field :product, :name %>
ora se tu prima del text_file inserisci:
<%= error_message_on :product, :name, :prepend_text => “Argomento
è un”, :css_class => ‘nomeClasseCss’ %>
succedera’ che ad un submit se il field argomento non e’ stato inserito
uscira’ la scritta sopra il campo con il css da te assegnato e con la
scritta di tuo piacimento.
e vengono tutte eseguite e vedrai i vari msg per quelle false
Poi se necessiti di un controllo particolare e pensi di poterlo fare con
una solo regexp allora usi:
validates_format_of :name, :with => //, :message => “…”
poi se il tuo e’ un caso ultra particolare allori usi before_save
sempre nel modello:
before_save :verify_name
def verify_name
if self.name == nil
errors.add(“Argomento non presente”)
end
oppure senza usare before_save setti la funzione validate
def validate
end
che viene eseguita in qualsiasi operazione, sia di create ed update…
ciao, io uso il plugin Globalite su rails 2.1; quello che fa è
ridefinire ActiveRecord::Error::full_messages
alla peggio potresti farlo anche tu, usando un qualche hash tipo
{:name => “Argomento”, …}, definito magari dentro il singolo model,
e in full_messages semplicemente sostituisci il nome del campo col
valore dell’hash.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.