2011-10-29 5 views
0

Sur mon application web, j'ai une page de connexion qui est dans les pages du contrôleur appelé welcome.html.erbInteraction entre les contrôleurs

A l'intérieur il a une forme simple pour la connexion et un simple pour vous inscrire, aussi bien sur le même page.

Si l'utilisateur s'inscrit avec des informations d'identification incorrectes (comme une mauvaise confirmation du mot de passe, la longueur du mot de passe, etc.), le contrôleur qui le gère est la nouvelle méthode dans le contrôleur des utilisateurs.

Dans la nouvelle méthode, il vérifie si un utilisateur est créé et, dans le cas contraire, je souhaite qu'il revienne à la méthode de bienvenue dans Pages Controller en lui transmettant les erreurs créées lors de la création de l'utilisateur.

Il semble que si je fais un

redirect_to root_path 

Le nombre d'erreurs de l'inscription est remis à zéro lors du retour à la page racine. Si à la place j'appelle une autre action du contrôleur des utilisateurs, je vois les erreurs. Mais puisque tout le code html est dans la vue de bienvenue, je ne veux pas non plus répliquer le code dans les vues du contrôleur des utilisateurs.

Existe-t-il un moyen de transmettre ces données d'erreurs au contrôleur de pages?

La partie de l'erreur est

<% if object.errors.any? %> 

    <div id="error_explanation"> 
     <h2><%= pluralize(object.errors.count, "error") %> prohibited this <%= object.class.to_s.underscore.humanize.downcase %> from being saved:</h2> 
     <p>There were problems with the following fields:</p> 
     <ul> 
      <% object.errors.full_messages.each do |msg| %> 
       <li><%= msg %></li> 
      <% end %> 
     </ul> 
    </div> 
<% end %> 

que j'appelle à l'aide

<%= render 'shared/error_messages', :object => f.object %> 

Répondre

0

À partir du contrôleur Users j'ai appelé

fl cendres [: erreurs] = @ user.errors puis je changé la partie être

<% if object.any? %> 

    <div id="error_explanation"> 
     <h2><%= pluralize(object.count, "error") %> prohibited this <%= object.class.to_s.underscore.humanize.downcase %> from being saved:</h2> 
     <p>There were problems with the following fields:</p> 
     <ul> 
      <% object.full_messages.each do |msg| %> 
       <li><%= msg %></li> 
      <% end %> 
     </ul> 
    </div> 
<% end %> 

que j'ai appelé à l'aide

<%= render 'shared/error_messages', :object =>@user_errors %> 

qui a résolu le problème pour l'instant ..

1
redirect_to welcome_path 

(ou quel que soit le chemin réel est.)

+0

Cela ne travailler, mais cela ne résout pas le problème, que je ne semble pas avoir expliqué clairement après que je l'ai compris plus. J'ai mieux édité la question –

+0

@ RailsN00b Je ne sais pas quel est le problème. –

+0

Je modifie la question. Mon problème n'est pas la redirection à la racine, mais la réinitialisation des erreurs de la connexion en utilisant un –