Почему после возврата из link_to:remote => true отправляется вся форма?

У меня есть действие в форме, которое 1) выбирает продукт из списка 2) вызывает действие удаленного контроллера, которое возвращает количество элементов этого продукта, доступных на разных складах

Это делается с помощью link_to с:remote => true

  <div id="products"></div>
  <%= link_to 'Search product', "#", class: 'get_product', :remote => true %>

Тогда есть JavaScript

$('form').on('click', '.get_product', function(event) {
    var url;
    url='/recipes/get_product_list';
    url += '/' + $('#recipe_product_id').val();
    $.get(url, $(this).serialize(), null, "script");
    return event.preventDefault();
});

У меня есть шаблоны.js.erb, и правильные значения возвращаются в частичном.html.erb.

Проблема в том, что после возвращения частичного, страница полностью перезагружается, и я не хочу этого.

Почему это происходит? Я также попытался выяснить, как вызывать link_to со всем URL вместо использования "#" и jquery, но в этом случае я не знаю, как передать значение в поле выбора в помощнике link_to.

1 ответ

Поместите это в тег формы

<form onsubmit="return false;">

Не видя HTML-форму, трудно сказать, почему это происходит, но я думаю, что кнопка get_product отправляет форму И вызывает функцию-обработчик при нажатии.

Другие вопросы по тегам