Rails definieert een heleboel magie met benoemde routes die helpers zijn voor je routes. Soms, vooral bij geneste routes, kan het een beetje verwarrend zijn om bij te houden welke URL je krijgt voor een bepaalde routehulpmethode-aanroep. Is het mogelijk om met behulp van de Ruby-console te zien welke link een bepaalde helperfunctie zal genereren? Als ik bijvoorbeeld een benoemde helper zoals post_path(post) geef, wil ik zien welke URL wordt gegenereerd.
Antwoord 1, autoriteit 100%
Je kunt ze direct laten zien met rake routes
.
In een Rails-console kun je app.post_path
aanroepen. Dit werkt in Rails ~= 2.3 en >= 3.1.0.
Antwoord 2, autoriteit 85%
u kunt ook
include Rails.application.routes.url_helpers
vanuit een consolesessies om toegang te krijgen tot de helpers:
url_for controller: :users, only_path: true
users_path
# => '/users'
of
Rails.application.routes.url_helpers.users_path
Antwoord 3, autoriteit 7%
In de Rails-console bevat de variabele app een sessieobject waarop u pad- en URL-helpers als instantiemethoden kunt aanroepen.
app.users_path
Antwoord 4, autoriteit 3%
Je kunt altijd de uitvoer van path_helpers
in de console controleren. Gebruik gewoon de helper met app
app.post_path(3)
#=> "/posts/3"
app.posts_path
#=> "/posts"
app.posts_url
#=> "http://www.example.com/posts"
Antwoord 5
Onthoud als je route naam-spaced is, zoals:
product GET /products/:id(.:format) spree/products#show
Probeer dan:
helper.link_to("test", app.spree.product_path(Spree::Product.first), method: :get)
uitvoer
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>"
Antwoord 6
Voor Rails 5.2.4.1 moest ik
app.extend app._routes.named_routes.path_helpers_module
app.whatever_path