Ruby on Rails: запуск действия с помощью select_tag

У меня есть приложение, которое перечисляет события. Я хочу, чтобы пользователь мог фильтровать события по категориям. Для этого я хочу иметь поле выбора, в котором пользователь может выбрать категорию. Когда пользователь выбирает категорию, я хочу, чтобы было запущено действие, которое будет использовать javascript для отображения событий только из этой категории. Во всех сообщениях о переполнении стека, объясняющих, как это сделать, используется remote_function, поддержка которого, по-видимому, прекращена. Сейчас у меня есть код

select_tag "category",
    options_for_select(['Social', 'Academic','Sports and Recreation', 'Arts', 'Religious'])

Как я могу вызвать действие с помощью select_tag, когда параметр из раскрывающегося списка изменен/выбран? Я предполагаю, что мне, возможно, придется использовать :onchangeoption, но я не уверен, как это сделать.

Пожалуйста помоги!


person dinosaurW    schedule 18.03.2016    source источник


Ответы (3)


вставьте это в представление после тега select:

<script>
  $('#your_select_tag_id').on('change', function() {
    $.post({
      url: '/your/form/action',
      data: $('#your_form_id').serialize()
    }).success(function(data)) {
      console.log('this is what I got back: ' + data);
    };
  }
</script>
person Anthony Wang    schedule 18.03.2016

select_tag "category",
  options_for_select(['Social', 'Academic','Sports and Recreation', 'Arts', 'Religious']), :onchange => 'yourJSFunction()'

Вот для чего можно использовать параметр options-hash :)

person Philipp Meissner    schedule 18.03.2016

select_tag имеют хэш options (последний параметр), в который можно добавлять любые HTML-атрибуты для выбора.

Для получения дополнительной информации посетите страницу http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag

Чтобы добавить атрибут onchange, взгляните на приведенный ниже пример:

select_tag "category", options_for_select(['Social', 'Academic','Sports and Recreation', 'Arts', 'Religious']), :onchange => 'your_handler_function()'
person Thieu Nguyen    schedule 18.03.2016