Что является противоположностью url_for в Rails? Функция, которая берет путь и генерирует интерпретированный маршрут? - PullRequest
8 голосов
/ 08 февраля 2010

Мозг немного поджарен .... Как мне получить хэш контроллера: и действия из относительного_пути?

Это в основном противоположность url_for. в приведенном ниже примере «some_function» - это имя загадочной функции, которое я ищу ... Я знаю, что это легко, просто не могу вспомнить или, кажется, могу найти его в документации.

Вот так:

some_function('/posts/1/edit')
=> {:controller => 'posts', :action => 'edit', :id => '1'}

Ответы [ 2 ]

9 голосов
/ 08 февраля 2010

Rspec имеет метод params_for, который использует методы маршрутизации Action Controller для разбора путей с методами в маршруты.

Они немного более устойчивы, чем это, но сводятся к:

def params_for(path, method)
  params = ActionController::Routing::Routes.recognize_path(path, :method => method)
end
8 голосов
/ 25 января 2012

С Rails 3 лучше всего использовать

Rails.application.routes.recognize_path('/posts/1/edit')
...