Disons que j'ai un assistant de routeur sur lequel je veux plus d'informations, comme blogs_path, comment puis-je trouver les instructions de 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 Zobie's Blog montrant comment vérifier manuellement le mappage URL-contrôleur/action et l'inverse. Par exemple, commencez par
r = Rails.application.routes
pour accéder à l'objet routes (la page de Zobie, vieille de quelques années, dit d'utiliser ActionController::Routing::Routes
, mais c'est désormais obsolète au profit 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 voyez quelle URL est générée pour une combinaison contrôleur/action/paramètres 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 ajouter l'application aux appels dans la console, par exemple:
Ruby-1.9.2-p136 :002 > app.root_path
=> "/"
(C'est tout Rails v. 3.0.3)
Si vous voyez des erreurs comme
ActionController::RoutingError: No route matches
Là où cela devrait fonctionner, vous pouvez utiliser un Rails gem ou moteur qui fait quelque chose comme Spree fait où il ajoute des itinéraires, vous devrez peut-être faire autre chose pour afficher les itinéraires dans la console.
Dans le cas de Spree, c'est dans le fichier routes
Spree::Core::Engine.routes.prepend do
...
end
Et pour travailler comme @ mike-blythe le suggère, vous devez alors le faire avant generate
ou recognize_path
.
r = Spree::Core::Engine.routes
l'exécution de la commande routes depuis votre répertoire de projet affichera votre routage:
rake routes
c'est ça que tu avais en tête?