Распознавать маршруты в консоли 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
это то, что вы имели в виду?