2013-05-30 3 views
0

Когда я создаю несколько кнопок для той же формы в Rails, я могу использовать значение параметра [: commit], чтобы выяснить, какая кнопка была нажата ,Передача значения параметра [: commit] при вызове form.submit() через Javascript

How do I create multiple submit buttons for the same form in Rails?

Однако, у меня есть страницы результатов поиска, где пользователь может дополнительно уточнить результаты поиска, обновления результатов путем выбора или отмены граней, изменение даты фильтров и т.д. Я хотел бы быть в состоянии триггера form.submit(), используя javascript, если флажок фасет установлен или не установлен, например. Как передать параметр (например, механизм param [: commit]) на мой контроллер, чтобы я знал, какое действие пользователя вызвало обновление. Я не хочу, чтобы все было на кнопке.

$('.facet').on('change', function(e) { 

    // Do some stuff 

    var $form = $(this).closest('form'); 
    $form.submit(); // I want to pass in a "facet-selected" here so I know what triggered the submit 

}); 

С контроллером методом, который выглядит следующим образом

def refresh_search 
    if params[:commit] == 'facet-selected' 
     # Do something 
    elsif params[:commit] == 'date-range-changed' 
     # Do something else 
    end 
end 

Благодарит так много заранее.

Christy

ответ

1

Я полагаю, вы должны изменить сформировать немного, добавить скрытый ввод такое же имя, как кнопки отправки и установить его значение, когда отправить форму с помощью JS. Например.

<form> 
    <input type="hidden" name="commit" />  
    <input type="submit" name="commit" value="date-range-changed" />  
</form> 

Script

var $form = $(this).closest('form'); 
$form.find(':hidden').val('facet-selected'); 
$form.submit(); 
Смежные вопросы