Итак, я видел этот вопрос об этой проблеме, вызванной несколькими ссылки на jQuery или Prototype, но я могу подтвердить, что ссылаюсь на jQuery один раз на всей странице. Моя проблема заключается в следующем: когда у меня есть link_to
, подтверждающий удаление, всплывающее окно отображается дважды. Вот применимый код в моем шаблоне (написанном в Slim):
link_to('Destroy', depot_path(@depot.id), :confirm => "Really?", :method => :delete)
Я запускаю Rails 3.1.0 с включенным конвейером ресурсов, с gem 'jquery-rails'
в моем Gemfile
, а следующее находится в моем файле application.js
(который скомпилирован Sprockets для конвейера ресурсов).
//= require jquery
//= require jquery_ujs
//= require 'underscore'
//= require 'backbone'
У меня есть underscore.js
и backbone.js
в моем каталоге /vendor/assets/javascripts/
, и звездочки, кажется, находят их в порядке. Я также просмотрел файл application.js
, который обслуживает sprockets, и jQuery находится там только один раз, а jQuery UJS - только один раз. Вот как выглядит моя голова при отображении моей страницы (я пропустил значение csrf-token
для отображения, FWIW).
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<title>Administration</title>
<link href="/assets/screen.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/assets/application.js" type="text/javascript"></script>
<meta content="authenticity_token" name="csrf-param" />
<meta content="--token--omitted--" name="csrf-token" />
<script src="/assets/common/subdata.js" type="text/javascript"></script>
<link href="/assets/show.css" media="screen" rel="stylesheet" type="text/css" />
</head>
subdata.js
содержит код, специфичный для Backbone; ничего, что могло бы снова включить jQuery. Так в чем же дело? В моем проекте нет дополнительного файла jQuery; все это управляется через гем jquery-rails
. Что заставляет мой метод :confirm
срабатывать дважды?
EDIT: раньше я видел это на RC5 Rails 3.1, но теперь я также вижу это на Rails 3.1.