Вы должны определить помощников контроллера, чтобы получить пути для новых маршрутов в рельсах? - PullRequest
1 голос
/ 24 марта 2012

У меня есть модель Customer, и я хочу, чтобы его контроллер ответил на метод find

Я добавил это в свой файл rout.rb:

match 'customer / find /: name '=>' mymodel # find 'ресурсы: клиенты

В моем контроллере у меня есть что-то вроде этого:

def find
  @customers = Customer.fin_all_by_name(params[:name])
end

в моих представлениях, когда мне нужно создатьссылка для этого ресурса Я использую это:

= link_to 'Find By Name', :controller => "customers", :action => "find", :name => @customer.name

Сейчас я пробую интеграционные тесты с огурцом, и у меня есть проблема: мне нужно создать определение шага в моем файле customer_step.rb для клиентовс таким же именем:

, когда / ^ клиенты имеют то же имя, что и "(. *)" / url_encode ('/ Customers / find /' + $ 1)

сейчасэта строка не работает, она говорит неопределенный метод `url_encode 'Мне нужно закодировать эту строку, потому что если имя содержит пробел, я получаю очевидные ошибки.

Я новичок в ruby ​​и rails и думаю, что яя что-то здесь упускаю.

Следую ли я правильному шаблону для выполнения этого поиска?Должен ли я определить вспомогательный метод в моем контроллере для генерации URL-адресов поиска?Правильно ли, что эта строка есть в моем файле _step.rb?

Я не хочу, чтобы URL-адреса были такими: customer / find? Name = test
, но: Customers / find / test

Я только разобрался, немного изменил выражение соответствия и добавил параметр: as, и это дало мне возможность вызвать вспомогательный метод find_path ()

match 'customer / find /: name '=>' customer # find ',: as =>: find

Это правильно?

1 Ответ

1 голос
/ 24 марта 2012

Использование :as действительно должно создать помощника по маршруту для вас.Если вы хотите получить список подходящих маршрутов, на какой контроллер / действие они направляют, и имя помощника по маршруту, используйте rake routes в консоли.

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