2010-12-07 19 views
1

Je suis un débutant dans des rails, aujourd'hui j'ai fait ma première application Web en utilisant le validate, je viens de mettre ces lignes dans le modèle:RoR => validate étrange message de

class ClientWorkout < ActiveRecord::Base 

    validates_numericality_of :paid_amount 
    validates_presence_of :client_name 

end 

Ceci est la partie de vue:

<% form_for(@client_workout) do |f| %> 
    <%= f.error_messages %> 
     etc etc 

Tout fonctionne très bien, et la valeur sont stockés dans la db, en cas < si un succesful occour d'erreur, au contraire, cette erreur apparaît sur la vue de cette étrange manière suivante:

{{count}} errors prohibited this {{model}} from being saved 

There were problems with the following fields: 
{{attribute}} {{message}} 
{{attribute}} {{message}} 

(L'exemple montre ce qui se passe quand 2 paramètres du formulaire sont faux, mais cela arrive dans tous les cas)
Il ne parvient pas à remplacer "compte, modèle, attribut et message" par la valeur réelle. Quelqu'un peut-il comprendre ce qui s'est passé? J'utilise Ror 2.3.8 et les rails 1.8.7

Répondre

1

Rails introduit l'internationalisation intégrée en 2.3. Votre problème est un bug connu avec certaines combinaisons de rails et la gemme i18n. Si vous avez la version 0.5.0 d'i18n gem, essayez de passer à la version 0.4.2. Si vous utilisez des pierres précieuses du système:

sudo gem uninstall i18n 
sudo gem install i18n -v 0.4.2 

Si vous utilisez RVM pour gérer vos pierres précieuses, vous n'avez pas besoin de la commande sudo.

+0

Merci maintenant cela fonctionne, mais ... je ne parviens pas à installer la gemme i18 0.4.2, le point est qu'une fois que j'ai Uni nstalled la version 0.5.0, le message de validation a commencé à se comporter de la manière correcte, mais maintenant, je suis sans la gemme i18n parce que la version 0.4.2 ne fait que fausse installation, et pour fausse installation je veux dire ce qui suit: peppe @ ubuntu: ~ $ sudo gem install i18n -v 0.4.2 Installation réussie i18n-0.4.2 1 gem installé Installation de la documentation ri pour i18n-0.4.2 ... Installation de la documentation RDoc pour i18n-0.4.2 .. peppe @ ubuntu: ~ $ gem list | grep i18n peppe @ ubuntu: ~ $ – Joe

0

Si vous n'êtes pas intéressé à changer la version i18n vous pouvez effectuer les opérations suivantes Ajoutez le code ci-dessous dans config/locales/en.ym

Si en: est de copier et coller déjà disponible à partir ActiveRecord

Après cela arrêter le serveur et recommencez qui devrait afficher les messages d'erreur correctement ...

en: 
    activerecord: 
    errors: 
     full_messages: 
     format: "%{attribute} %{message}" 
     messages: 
     inclusion: "is not included in the list" 
     exclusion: "is reserved" 
     invalid: "is invalid" 
     confirmation: "doesn't match %{attribute}" 
     accepted: "must be accepted" 
     empty: "can't be empty" 
     blank: "can't be blank" 
     too_long: "is too long (maximum is %{count} characters)" 
     too_short: "is too short (minimum is %{count} characters)" 
     wrong_length: "is the wrong length (should be %{count} characters)" 
     not_a_number: "is not a number" 
     not_an_integer: "must be an integer" 
     greater_than: "must be greater than %{count}" 
     greater_than_or_equal_to: "must be greater than or equal to %{count}" 
     equal_to: "must be equal to %{count}" 
     less_than: "must be less than %{count}" 
     less_than_or_equal_to: "must be less than or equal to %{count}" 
     other_than: "must be other than %{count}" 
     odd: "must be odd" 
     even: "must be even" 
     template: 
     header: 
      one: "1 error prohibited this %{model} from being saved" 
      other: "%{count} errors prohibited this %{model} from being saved 
+0

Génial. J'essayais juste de résoudre ce problème. J'ai découvert qu'il s'agissait d'un problème d'i18n, que je me suis souvenu de rencontrer quand j'étais sur un autre projet. Mais ne savais pas comment prendre soin des messages qui correspondent à votre modèle: en-tête: autre dans le fichier .yml que vous avez posté. Super utile. Merci. Et une solution beaucoup mieux que de changer les versions de gemme, qui peuvent avoir des effets secondaires involontaires, même si cela résout ce problème. –