2016-05-06 1 views
0

У меня есть форму с одним text_field_tag. Эта форма появляется повсюду, живя внутри макета приложения. Я использую params[:controller] для установки url_for_options. В зависимости от того, на какой странице пользователь использует этот text_field_tag, функция будет отличаться.Как получить доступ к содержимому текстового поля перед отправкой пользователем формы

Логика затем проводится внутри действия создания многочисленных контроллеров, которые используют эту форму поиска.

Если страница, которую пользователь ищет, не является одним из указанных контроллеров, у меня есть предустановка, в настоящее время она по умолчанию равна единице. Я хочу иметь возможность изменять используемый контроллер по умолчанию в зависимости от содержимого text_field_tag.

Итак, если пользователь вводит IP-адрес, я перенаправляю их на страницу x. Если пользователь вводит адрес электронной почты, я направлю их на страницу y.

Мой вопрос в том, как я могу проверить, что пользователь ввел до того, как они попали в submit, или после того, как они попали в submit, но до того, как я установил url_for_options?

У меня есть инструкция if/elsif/else, обрабатывающая url_for_options внутри моей формы. Внутри оператора else я задал маршрут поиска по умолчанию, который устанавливает url_for_options. В основном я хотел бы, чтобы внутри блока else проверить, является ли text_field_tag IP по сравнению с адресом электронной почты (я могу выполнить фактическую проверку с помощью регулярного выражения и не нуждаюсь в помощи с этим). Но моя проблема в том, что я не могу найти способ увидеть внутри text_field_tag, пока я уже не отправил форму, и я не уверен, где я могу поместить логику, чтобы проверить внутренности text_field_tag, а затем перенаправить их на желаемую страницу.

+1

Можете ли вы опубликовать некоторый фактический код, пожалуйста. Извините, но это немного расплывчато. –

+2

Пожалуйста, прочитайте «[ask]» и «[mcve]». Мы хотели бы видеть вашу попытку решить эту проблему и работать оттуда. Описание без какого-либо кода затрудняет нам «видеть» то, что вы делаете, и приводит к множеству угадываний и вопросов. Ни Ruby, ни Rails не могут делать то, что вы хотите, поэтому этот вопрос касается исключительно JavaScript и jQuery. –

ответ

1

Вы можете указать onsubmit в теге формы для запуска пользовательской функции JS для этого.

I.E.

<form onsubmit="setURL()" ...> 

Когда пользователь отправляет форму, он сначала вызовет функцию setURL(). Оттуда вы можете использовать JS или jQuery для установки действия на определенный URL или страницу на основе входного значения.

+0

Это именно то, что мне нужно. Приносим извинения за неопределенный вопрос! @ruby_newbie – sire

Смежные вопросы