Распознавать маршруты в консоли rails Session

Скажем, у меня есть помощник роутера, который я хочу получить больше информации, например blogs_path, как узнать подсказки карты за консолью.

Я попытался сгенерировать и распознать, и я получил нераспознанную ошибку метода, даже после того, как мне понадобилось "config/routes.rb"

Ответ 1

Существует хорошее резюме с примерами в Блог Zobie, показывающий, как вручную проверять сопоставление URL-to-controller/action и обратное. Например, начните с

 r = Rails.application.routes

для доступа к объекту маршрутов (страница Zobie, пара лет назад, говорит, что используется ActionController::Routing::Routes, но это теперь не рекомендуется в отношении Rails.application.routes). Затем вы можете проверить маршрутизацию на основе URL-адреса:

 >> r.recognize_path "/station/index/42.html"
 => {:controller=>"station", :action=>"index", :format=>"html", :id=>"42"}

и посмотрите, какой URL-адрес генерируется для данной комбинации контроллеров/действий/параметров:

 >> r.generate :controller => :station, :action=> :index, :id=>42
 => /station/index/42

Спасибо, Zobie!

Ответ 2

В консоли приложения Rails 3.2:

# include routing and URL helpers
include ActionDispatch::Routing
include Rails.application.routes.url_helpers

# use routes normally
users_path #=> "/users"

Ответ 3

В принципе (если я правильно понял ваш вопрос), это сводится к включению модуля UrlWriter:

   include ActionController::UrlWriter
   root_path
   => "/"

Или вы можете добавить приложение к вызовам в консоли, например:

   ruby-1.9.2-p136 :002 > app.root_path
   => "/" 

(Это все Rails v. 3.0.3)

Ответ 4

Если вы видите ошибки, например

ActionController::RoutingError: No route matches

Где он должен работать, вы можете использовать жемчужину или движок рельсов, который делает что-то вроде Spree, где он добавляет маршруты, вам может понадобиться сделать что-то еще для просмотра маршрутов в консоли.

В режиме spree это находится в файле маршрутов

Spree::Core::Engine.routes.prepend do
  ...
end

И для работы, подобной @mike-blythe, вы должны сделать это до generate или recognize_path.

r = Spree::Core::Engine.routes

Ответ 5

запуск команды маршрутов из вашего каталога проекта отобразит вашу маршрутизацию:

rake routes

это то, что вы имели в виду?