Распознать маршруты в рельсах консоли Session - PullRequest
53 голосов
/ 06 мая 2010

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

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

Ответы [ 5 ]

92 голосов
/ 22 декабря 2010

Хорошее резюме с примерами на Блог Зоби , показывающее, как вручную проверять сопоставление URL-адрес-контроллер / действие и обратное. Например, начните с

 r = Rails.application.routes

для доступа к объекту маршрутов (страница Зоби, пара лет, говорит, что использует 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

Спасибо, Зоби!

51 голосов
/ 13 июля 2012

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

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

# use routes normally
users_path #=> "/users"
34 голосов
/ 02 февраля 2011

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

   include ActionController::UrlWriter
   root_path
   => "/"

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

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

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

3 голосов
/ 23 июня 2016

Если вы видите ошибки типа

ActionController::RoutingError: No route matches

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

В случае spree, это в файле маршрутов

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

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

r = Spree::Core::Engine.routes
2 голосов
/ 06 мая 2010

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

rake routes

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...