7
votes

Rails Erreur Resource_Name - Devise Aide Aide Routing et Rendu

J'essaie de rendre la vue de connexion pour le gem du crise, mais je reçois une erreur, ci-dessous est le code que j'ai actuellement:

Ceci est mon Vues / utilisateurs / partagés / _links.html.erb : p> xxx pré>

et mon config / routtes.rb code>: p> xxx pré>

et Dans ma disposition de l'application: p> xxx pré>

i obtenir l'erreur suivante dans le _links.html.erb code> partielle: p> xxx

Enfin, dans mon contrôleur d'application, j'ai les suivants: P>

before_filter :resource_name
  def resource_name
    if user_signed_in?
      current_user.name
    else
      :user
    end
  end
end


0 commentaires

3 Réponses :


18
votes

Resource_Name est défini dans les contrôleurs générés par le congé. Je ne pense pas que vous puissiez inclure ces liens partagés dans la mise en page de l'application, je pense qu'ils sont destinés à être utilisés sur les formulaires de congise (enregistrement, sessions, mots de passe, confirmations, etc.), qui sont rendus par des contrôleurs de congise.

Si vous souhaitez avoir peu d'extraits de connexion / sortie dans chaque page, vous voudrez peut-être envisager d'écrire ces liens vous-même. Par exemple, si votre objet que vous utilisez Devise pour est utilisateur , vous pouvez écrire ceci: xxx

le Resource_Name est juste l'abstraction du congé pour la ressource que vous utilisez. Je m'attends à ce que si vous faites ce lien, vous savez quel de vos objets authentifiés que vous souhaitez vous connecter, vous pouvez donc la spécifier explicitement. Vous pourriez aslo exécuter routes râte | Sessions Grep et voyez ce que le nom du chemin est et utilisez-le directement. Par exemple: xxx


4 commentaires

J'ai mis à jour ma question comment créer un cadeau_filter: Nom de ressources?


Je crois que ressource_name est généralement la version de soulignement du nom de la classe. Vous pouvez essayer actuel_user.class.name.underscore . Cela devrait donner utilisateur pour un objet de type utilisateur ou fancy_user pour un objet de classe FancyUser.


Il existe des commentaires utiles sur ces méthodes d'assistance "spécifiques à des ressources" dans Devise / Contrôleurs / URL_HELPERS.RB


remercier ces travaux. J'ai remplacé new_registration_path (Nom de ressources) avec new_user_registration_path Cela fonctionne maintenant.



0
votes

Le problème est que dans votre fichier routes.rb Vous définissez une ressource appelée sessions , concevez également une ressource avec le même nom.

La solution est simple, il suffit de supprimer les ressources : sessions à partir du fichier des itinéraires et tout devrait fonctionner.

La raison pour laquelle cela se produit est que les rails créent des aides d'itinéraire pour toutes les ressources. Donc, cela crée une aide d'itinéraire appelée new_session_path (format). Mais Devise crée également une méthode d'assistance appelée new_session_path (Nom de ressources) . La version Devise renvoie un chemin nouveau_ _Session_Path . En d'autres termes, les aides générés par le fichier de routes remplacent ceux de l'engagement.

Notez que cela peut également se produire si vous faites quelque chose comme: xxx

Dans ce cas, la solution consiste à remplacer nouvelle_session et drotH_Session avec Connexion et Déconnexion respectivement.


0 commentaires

0
votes

Vous pouvez résoudre cette erreur mon remplacement de votre application / Vues / Devise / Confirmation / New.HTML Fichier avec

https://github.com/heartcombo/devise/pull/3684/files

avec l'application de fichier / vues / Devise / Confirmation / New.html dans la liaison ci-dessus Vous pouvez trouver ce fichier à partir du lien ci-dessus et remplacer votre fichier avec IT Beacuse Il existe certaines modifications apportées dans la version récente, alors visitez le lien ci-dessus et trouvez l'application / Vues / Devise / Confirmation / New.html Fichier de ci-dessus et remplacez-le par votre projet. Application de fichier / vues / Devise / Confirmation / New.html Fichier


1 commentaires

Devrait poster le code et non un lien. Les réponses ne doivent pas compter sur une source externe.