Reconnaître les itinéraires dans la console de rails Session

Disons que j’ai un assistant de routeur sur lequel je veux plus d’informations, comme blogs_path, comment trouver les instructions de la carte derrière cela dans la console.

J’ai essayé de générer et de reconnaître et j’ai eu une erreur de méthode non reconnue, même après avoir demandé «config / routes.rb»

Il y a un bon résumé avec des exemples sur le blog de Zobie montrant comment vérifier manuellement le mappage d’URL à contrôleur / action et l’inverse. Par exemple, commencez par

r = Rails.application.routes 

pour accéder à l’object routes (la page de Zobie, âgée de deux ans, dit utiliser ActionController::Routing::Routes , mais elle est maintenant déconseillée en faveur de Rails.application.routes ). Vous pouvez ensuite vérifier le routage en fonction d’une URL:

  >> r.recognize_path "/station/index/42.html" => {:controller=>"station", :action=>"index", :format=>"html", :id=>"42"} 

et voir quelle URL est générée pour une combinaison contrôleur / action / parameters donnée:

  >> r.generate :controller => :station, :action=> :index, :id=>42 => /station/index/42 

Merci Zobie!

Dans la console d’une application Rails 3.2:

 # include routing and URL helpers include ActionDispatch::Routing include Rails.application.routes.url_helpers # use routes normally users_path #=> "/users" 

Fondamentalement (si j’ai bien compris votre question), cela revient à inclure le module UrlWriter:

  include ActionController::UrlWriter root_path => "/" 

Ou vous pouvez append une application aux appels dans la console, par exemple:

  ruby-1.9.2-p136 :002 > app.root_path => "/" 

(Ceci est tout Rails v. 3.0.3)

Si vous voyez des erreurs comme

 ActionController::RoutingError: No route matches 

Là où cela devrait fonctionner, vous utilisez peut-être une gem ou un moteur de rails qui fait quelque chose comme Spree fait où il ajoute des routes, vous devrez peut-être faire autre chose pour voir les routes dans la console.

Dans le cas de spree, c’est dans le fichier des routes

 Spree::Core::Engine.routes.prepend do ... end 

Et pour travailler comme @ mike-blythe, vous devez le faire avant de generate ou de recognize_path .

 r = Spree::Core::Engine.routes 

exécuter la commande routes à partir de votre répertoire de projet affichera votre routage:

 rake routes 

est-ce ce que vous aviez en tête?