2014-02-12 3 views
0

Приложение My Rails отправляет сразу два сообщения сразу один за другим. Это происходит только в формах, которые я вручную представляю с помощью jQuery.Rails отправляет запрос на отправку дважды или более

Если я перейду на другую страницу, только один и попробуйте отправить форму еще раз, отправляется только один запрос. Когда я перехожу назад, Запросы принимаются. Для каждой навигации вперед, затем назад добавляется один запрос.

Console output

Вот как я отправить форму.

jQuery(document).on "ready page:change", -> 
    $('body').on 'click', '[data-behaviour="submit-on-check"]', -> 
    $(@).closest('form').submit() 

Вот форма:

= form_for task, url: complete_task_path(task) , remote: true do |f| 
    = f.check_box :complete, class: 'complete', data: { behaviour: 'submit-on-check' } 

Мой манифест.

//= require jquery 
//= require jquery.ui.effect-highlight 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

Мои Gemfile (Rails 4.0.2):

gem 'jquery-rails' 
gem 'turbolinks' 
gem 'jquery-ui-rails' 

ответ

1

Поскольку вы используете Turbolinks, экземпляр страницы не изменяется при переходе со страницы на другую. Думаю, в результате каждый раз при запуске события page:change вы связываете новый обработчик/закрытие с помощью $('body').on. Поскольку предыдущие обработчики остаются связанными с DOM, выполняются несколько экземпляров вашего закрытия.

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

bound = false 
jQuery(document).on "ready page:change", -> 
    unless bound 
    $('body').on 'click', '[data-behaviour="submit-on-check"]', -> 
     $(@).closest('form').submit() 
    bound = true 
-1

Может быть у вас есть jquery_ujs дважды в приложении или в папке JavaScript.

Убедитесь, что вы не должны загружаться дважды, попробуйте проверить источник страницы.

Я знаю это, это 100% проблемы, связанные с этим js.

+0

Не загружается дважды. Я в этом уверен. –

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