Передача значений параметров в redirect_to в виде строки запроса в рельсах - PullRequest
28 голосов
/ 03 апреля 2009

Это должно быть просто, но я не могу найти простой ответ.

Как передать значения параметров из текущего запроса в вызов redirect_to? У меня есть некоторые значения формы, которые я хотел бы передать в строку запроса перенаправления GET

Я бы хотел сделать что-то вроде:

redirect_to @thing, :foo => params[:foo]

и получите по адресу:

http://things/4?[foo][key1]=val1&[foo][key2]=val2

Спасибо!

Также - как это можно обработать для redirect_to: back?

redirect_to :back, :foo => params[:foo]

Ответы [ 2 ]

37 голосов
/ 04 апреля 2009

Форма «Запись» redirect_to использует второй аргумент только для статуса ответа. Вам придется использовать другую форму redirect_to, такую ​​как форма 'String'. e.g.:

redirect_to thing_path(@thing, :foo => params[:foo])

, который будет работать для вложенных params[:foo] параметров, как вы упомянули. Или, как прокомментировал Дрю ниже, вы можете использовать polymorphic_url (или _path):

redirect_to polymorphic_path(@thing, :foo => params[:foo])
4 голосов
/ 06 апреля 2009

Добавить к ответу Джордана:

Если вы не знаете тип объекта @thing, вы можете использовать универсальный метод polymorphic_url. Это метод, который вызывается изнутри, когда вы в любом случае передаете объект в redirect_to.

...