Rails: проверка вывода помощника пути из консоли

Rails определяет пучок магии с именованными маршрутами, которые делают помощники для ваших маршрутов. Иногда, особенно с вложенными маршрутами, может немного запутаться, чтобы отслеживать, какой URL-адрес вы получите для заданного метода вызова метода. Возможно ли, используя консоль Ruby, посмотреть, какую ссылку генерирует данная вспомогательная функция? Например, с помощью указанного помощника, такого как post_path (post), я хочу видеть, какой URL-адрес создан.

Ответ 1

Вы можете напрямую показать их с помощью rake routes.

В консоли Rails вы можете вызвать app.post_path. Это будет работать в Rails ~ = 2.3 и >= 3.1.0.

Ответ 2

вы также можете

include Rails.application.routes.url_helpers

из сеансов консоли для доступа к помощникам:

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

Ответ 3

В консоли Rails приложение переменной содержит объект сеанса, на котором вы можете вызвать помощники пути и URL-адреса как методы экземпляра.

app.users_path

Ответ 4

Вы всегда можете проверить вывод path_helpers в консоли. Просто используйте помощник с app

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

app.posts_path
#=> "/posts"

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

Ответ 5

Помните, если ваш маршрут имеет разнесение по имени, например:

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

Затем попробуйте:

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

Выход

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>"