У меня есть модель 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
Это правильно?