Rails: Vérifiez la sortie de l’assistant de chemin depuis la console

Rails définit un bouquet de magie avec des routes nommées qui facilitent vos itinéraires. Parfois, en particulier avec les routes nestedes, il peut être difficile de garder une trace de l’URL que vous obtiendrez pour un appel de méthode d’assistance de route donné. Est-il possible, à l’aide de la console Ruby, de voir quel lien une fonction d’assistance donnée va générer? Par exemple, pour une aide nommée comme post_path (post), je veux voir quelle URL est générée.

Vous pouvez les montrer directement avec les rake routes .

Dans une console Rails, vous pouvez appeler app.post_path . Cela fonctionnera dans Rails ~ = 2.3 et> = 3.1.0.

vous pouvez aussi

 include Rails.application.routes.url_helpers 

à partir de l’intérieur d’une session de console pour accéder aux assistants:

 url_for controller: :users, only_path: true users_path # => '/users' 

Dans la console Rails, l’application variable contient un object de session sur lequel vous pouvez appeler les assistants de chemin et d’URL en tant que méthodes d’instance.

 app.users_path 

Vous pouvez toujours vérifier la sortie de path_helpers dans la console. Il suffit d’utiliser l’aide avec l’ app

 app.post_path(3) #=> "/posts/3" app.posts_path #=> "/posts" app.posts_url #=> "http://www.example.com/posts" 

Rappelez-vous si votre itinéraire est espacé, comme:

 product GET /products/:id(.:format) spree/products#show 

Alors essaye :

 helper.link_to("test", app.spree.product_path(Spree::Product.first), method: :get) 

sortie

 Spree::Product Load (0.4ms) SELECT "spree_products".* FROM "spree_products" WHERE "spree_products"."deleted_at" IS NULL ORDER BY "spree_products"."id" ASC LIMIT 1 => "test"