Если вы установите значение в form_for
, где оно у вас есть сейчас, оно будет частью адреса, на который отправляется форма, поэтому вы сможете получить его в контроллере через params[:search]
.
Вы также можете создать текстовое поле (текстовое поле, поле выбора и т. Д.), Чтобы пользователь мог заполнить значение, например, например. описано в APIDock . Вы даже можете иметь скрытое поле, которое не будет отображаться пользователю, но все равно будет отправлено вместе с формой. В любом случае он будет доступен через params[:search]
.
Редактировать Другой способ понять ваш вопрос заключается в том, что вы хотите, чтобы параметр search
в form_for :url
передавался динамически в зависимости от того, что набрал пользователь. В этом случае я могу придумать три решения:
Вариант 1 . Отправьте форму куда-нибудь независимо от :search
и перенаправьте оттуда:
Форма: form_for :search, :url=>{:controller=>"search", :action=>"handle"}
SearchController
def handle
case params[:search] of
when :foo then redirect_to some_path(params[:search], ...)
when :bar then redirect_to other_path(params[:search], ...)
end
end
Недостатком является то, что вы не можете сделать POST-перенаправление, только GET. Преимущество в том, что форма обрабатывается в одном месте. Так как это - почему бы не включить всю обработку и пропустить перенаправление? Это был бы вариант, который я бы рассмотрел.
Вариант 2 . Используйте некоторый JavaScript для изменения параметра action
HTML-элемента form
перед отправкой.
Вариант 3 . Используйте некоторый JavaScript для генерации формы на основе более раннего выбора.
В этом сценарии есть две формы, только одна из которых может быть отправлена пользователем через кнопку. Первая форма содержит только раскрывающийся список (текстовое поле, переключатели) и средство просмотра формы JavaScript. Основываясь на значении, этот наблюдатель отображает правильную форму - обратите внимание, что введенное пользователем значение :search
известно в этот момент при визуализации формы.
Конечно, вместо первой формы вы можете использовать коллекцию ссылок, если выбор :search
доступных пользователю вариантов ограничен. Вариант 3, вероятно, не идеален с точки зрения производительности, но должен быть достаточно хорош, чтобы расширить, понять и использовать его позже.
Возможно, есть и другие способы сделать это.