web-dev-qa-db-fra.com

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

Rails définit un ensemble de magie avec des itinéraires nommés qui constituent des aides pour vos itinéraires. Parfois, en particulier avec les routes imbriquées, il peut être un peu déroutant de savoir quelle URL 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, étant donné un assistant nommé tel que post_path (post), je veux voir quelle URL est générée.

269
Derek Thurn

Vous pouvez les montrer avec rake routes directement.

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

401
Chubas

vous pouvez aussi

include Rails.application.routes.url_helpers

depuis une console pour accéder aux aides:

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

Dans la console Rails, la variable app contient un objet de session sur lequel vous pouvez appeler des aides de chemin et d'URL en tant que méthodes d'instance.

app.users_path
21
user3622458

Vous pouvez toujours vérifier le résultat de path_helpers dans la console. Il suffit d'utiliser l'assistant avec app

app.post_path(3)
#=> "/posts/3"

app.posts_path
#=> "/posts"

app.posts_url
#=> "http://www.example.com/posts"
10
Deepak Mahakale

Rappelez-vous si votre route est nom-espacée, 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
=> "<a data-method=\"get\" href=\"/products/this-is-the-title\">test</a>" 
1
Arup Rakshit