Je veux juste apporter un petit nouveau ici:
J'ai donc trouvé un moyen plus facile d'obtenir le résultat que "AnApprentice" voulait.
Tout d'abord, si vous souhaitez personnaliser quoi que ce soit dans le dispositif plug-in, je conseille vivement la copie d'après le code de "\Ruby_repertory\lib\ruby\gemmes\1.9.1\gemmes\concevoir-version\app\controllers|helpers|expéditeurs..." le fichier que vous voulez dans votre projet.
[Edit] Ou vous pouvez créer votre fichier d'hériter de la "normale" concevoir de fichiers...... Comme dire... Vous voulez remplacer une seule fonction au sein de l'concevoir/registrations_controller.rb, la première ligne de vos Utilisateurs personnalisée d'enregistrements contrôleur serait:
class Users::RegistrationsController < Devise::RegistrationsController
[Edit 7 août 2013] Maintenant, mette en place un outil qui permet de générer des contrôleurs: https://github.com/plataformatec/devise/wiki/Tool:-Generate-and-customize-controllers
Alors... de toute façon... j'ai réussi à obtenir ce "AnApprentice" je voulais juste écrire ce (pour une solution plus propre, voir big edit) :
#/my_project/app/helpers/devise_helper.rb
module DeviseHelper
def devise_error_messages!
return "" if resource.errors.empty?
return resource.errors
end
end
Et, à mon avis, la prochaine lignes assez bien travaillé:
<% devise_error_messages!.each do |key, value| %>
<div class="flash <%= key %>"><%= key %> <%= value %></div>
<% end %>
Eh bien... vous pouvez accéder à des erreurs d'un attribut spécifique comme ceci:
#Imagine you want only the first error to show up for the login attribute:
<%= devise_error_messages![:login].first %>
Et... Un petit truc pour avoir une seule erreur (le premier à l'avoir attrapé) montrant par attribut:
<% if resource.errors.any? %>
<% saved_key = "" %>
<% devise_error_messages!.each do |key, value| %>
<% if key != saved_key %>
<div class="flash <%= key %>"><%= key %> <%= value %></div>
<% end %>
<% saved_key = key %>
<% end %>
<% end %>
Je sais que ça a été un moment depuis que cette question a été posté, mais je pense que ça aidera beaucoup de concevoir des utilisateurs :).
Gros Edit:
Comme j'aime à prolonger mon code, en le rendant plus clair et le partager avec d'autres, j'ai récemment voulu changer le devise_error_messages! méthode pour l'utiliser dans mon point de vue et qu'il affiche le truc que j'ai expliqué ci-dessus.
Donc, voici ma méthode:
def devise_error_messages!
html = ""
return html if resource.errors.empty?
errors_number = 0
html << "<ul class=\"#{resource_name}_errors_list\">"
saved_key = ""
resource.errors.each do |key, value|
if key != saved_key
html << "<li class=\"#{key} error\"> This #{key} #{value} </li>"
errors_number += 1
end
saved_key = key
end
unsolved_errors = pluralize(errors_number, "unsolved error")
html = "<h2 class=\"#{resource_name}_errors_title\"> You have #{unsolved_errors} </h2>" + html
html << "</ul>"
return html.html_safe
end
Pas grand-chose ici, j'ai réutilisé le code que j'ai écrit dans mon point de vue pour afficher une seule erreur pey attribut, parce que, souvent, le premier est la seule pertinente (par exemple, lorsque l'utilisateur oublie d'un champ obligatoire).
Je suis comptant ceux "unique" des erreurs et je suis en train de faire un H2 titre HTML à l'aide de pluraliser et de le mettre AVANT la liste des erreurs.
Alors maintenant, je peux utiliser le "devise_error_messages!" comme celui par défaut et le rendu est exactement ce que j'ai déjà été rendu avant.
Si vous souhaitez accéder à un message d'erreur spécifique à votre avis, je vais maintenant vous recommandons d'utiliser directement "des ressources.erreurs[:attribut].d'abord" ou quoi que ce soit.
Seya,
Kulgar.