J'ai un contrôleur de session, avec: new,: create et: delete actions. J'ai aussi une méthode qui vérifie le contrôleur de la page courante:Empêche les rails de changer la partie contrôleur de l'url, en cas d'échec de la publication
def controller_for(path)
Rails.application.routes.recognize_path(path)[:controller]
end
Normalement, cette méthode fonctionne très bien, mais si l'utilisateur visite /login
et les signes-vous avec les informations de connexion incorrectes, puis rails change l'URL pour /sessions
et rend l'action :new
, à quel point ma méthode jette au-dessus d'un ARROR
No route matches "/sessions"
Il semble que recognize_path
essaie de le faire:
>> r = Rails.application.routes
>> r.recognize_path "/sessions"
=> {:controller=>"sessions", :action=>"index"}
Comme je n'ai pas d'action d'index, cela provoque une erreur. Ce que je veux vraiment, est la suivante:
>> r.recognize_path "/login"
=> {:controller=>"sessions", :action=>"new"}
Alors, comment puis-je forcer rails à garder l'URL comme /login
en cas d'échec de la connexion, au lieu de changer à /sessions
?
Merci, j'ai juste remarqué que quelqu'un avait répondu à cette question :) Bonne info là, je le comprends maintenant. – stephenmurdoch
Heureux que c'était utile. Je perds aussi de temps en temps la trace de mes réponses Stack;) –