Я написал небольшой тест для проверки параметров перенаправления и URL. Как ни странно тест не пройден, даже если сообщение об ошибке, кажется, указывает результат на самом деле правильно:rspec redirect_to с несколькими параметрами
Failure/Error: response.should redirect_to(movies_path(:sort => 'title'))
Expected response to be a redirect to
<http://test.host/movies?sort=title>
but was a redirect to
<http://test.host/movies?ratings%5BG%5D=G&ratings%5BNC-17%5D=NC-17&ratings%5BPG%5D=PG&ratings%5BPG-13%5D=PG-13&ratings%5BR%5D=R&sort=title>
URL-адреса идентичны (так как они должны быть) и ожидаемый параметр «сортировки = название» включено в параметры фактического результата. Я считаю, что это действительная ситуация ...
Acoording to http://api.rubyonrails.org/classes/ActionDispatch/Assertions/ResponseAssertions.html#method-i-assert_redirected_to: «Это совпадение может быть частичным, так что assert_redirected_to (controller:« weblog ») также будет соответствовать перенаправлению redirect_to (controller:« weblog », action : «показать») и т. д. ».
РЕШЕНИЕ: Я не смог получить предложение о выбранном ответе на работу, но ответ был полезен, объяснив, что «частичное» совпадение в приведенной выше ссылке несколько вводит в заблуждение, а код не работает как ожидается. Таким образом, я создал Hash
со всеми параметрами, принятыми, и добавил их к «должен redirect_to» тест:
response.should redirect_to(movies_path(:sort => 'title', :ratings => rest))
где «отдых» является то, что хэш.
Думаю, я это понимаю. Я не мог найти, как сделать предложение: «ваш утверждённый путь - это хэш с контроллером или контроллером и действие как ключи», но я смог расширить хэш с отсутствующими параметрами. – jcoppens
Чтобы уточнить, единственные частичные совпадения, которые будут работать: ': controller => 'movies'' или': controller =>' movies ',: action =>' index''. Я не удивлюсь, если документация по этому методу предшествует внедрению названных маршрутов, таких как 'movies_path'. – bgates
Цените объяснение, @bgates. Я пробовал эти комбинации и некоторые другие, но не повезло. Я был несколько вовремя с другими проектами - даже когда в аптеке моей жены была разбита система. Я еще раз проверю позже. Как было отредактировано выше, я сделал finf решение. – jcoppens