link_to: дважды подтвердить всплывающее окно - PullRequest
56 голосов
/ 18 декабря 2010

Этот тег с рельсами 3

<%= link_to 'Destroy', item, :method => :delete,:confirm=>'Are you sure?' %>

производит этот HTML

<a href="/news/3" data-confirm="Are you sure?" data-method="delete" rel="nofollow">Destroy</a>

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

Чтоможет быть причиной этого?

Ответы [ 15 ]

77 голосов
/ 14 декабря 2011

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

Моя проблема была в том, что у меня было

config.assets.debug = true 

в config / environment / development.rb

Изменение этой строки на

config.assets.debug = false

исправил дублирование подтверждения для меня. Я нашел соответствующую информацию в этом руководстве по рельсам для конвейера активов . Надеюсь, это поможет!

75 голосов
/ 18 декабря 2010

Похоже, что обработчик подтверждения Javascript в rails.js подключается дважды.

Не могли бы вы случайно включить две копии rails.js через дублирование помощника javascript_include_tag?

44 голосов
/ 15 августа 2013

Я использовал для включения javascript_include_tag внизу моего файла-макета haml.

С Rails4 и Turbolinks случается так:

  • Все в порядкепри первой загрузке страницы (всплывающее окно для подтверждения появляется только один раз)
  • Посещение другой страницы -> всплывающее окно происходит дважды
  • Посещение еще одной страницы -> всплывающее окно происходит три раза
  • и так далее
  • до перезагрузки страницы.

Я решил проблему, переместив javascript_include_tag снизу в <head>

4 голосов
/ 18 марта 2015

Я использую Rails 4, и ни один из ответов не работал для меня, однако сработало следующее ... Я изменил строку:

<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 

на

<%= javascript_include_tag 'application', 'data-turbolinks-eval' => false %>.

https://github.com/rails/turbolinks/issues/244

2 голосов
/ 25 августа 2015

Хорошие ответы здесь,

Но если вы все сделали и по-прежнему получаете эти двойные всплывающие окна, и если вы работаете в режиме разработки , проверьте, загружен ли public/assets скомпилированнымактивы.

Удаление public/assets/* решает проблему.

1 голос
/ 19 марта 2019

Я копирую это решение из другого поста, но это то, что у меня сработало (rails 5)

"удалите jquery_ujs из вашего application.js, поскольку rails_ujs достаточно для более поздней версии rails."

Я включил: //= require jquery //= require jquery-ujs //= require rails-ujs

и после удаления все работает нормально. Решение от: Почему я получаю предупреждение JQuery дважды в Rails?

1 голос
/ 08 мая 2013

У меня была такая же проблема с Rails 3.2.12, но простое обновление до 3.2.13 решило эту проблему для меня.

1 голос
/ 18 марта 2013

Это похоже на ошибку в Rails.Очевидно, что директивы в application.js не только раскрываются в отдельные файлы при включенном режиме отладки, но и включаются в application.js.Я не смотрел на код Rails для этого, но предположил, что это происходит из-за application.js, являющегося файлом JavaScript по умолчанию.Если вы переименуете этот файл во что-то другое, допустим, что default.js будет корректно включать в режим отладки файлы, указанные в директиве, а default.js будет выводить только JavaScript, который находится только в этом файле.Таким образом, не генерируется повторяющийся код.

Пример:

application.js

// = require jquery_ujs

foo ();

Результат:

1) jquery_ujs.js

2) application.js с содержимым jquery_ujs и foo ()


default.js

// = require jquery_ujs

foo ();

Результат:

1) jquery_ujs.js

2) default.js с foo ()

0 голосов
/ 16 февраля 2015

Попробуйте запустить либо

rake assets:precompile ENV=development 

или

rake assets:precompile ENV=production
0 голосов
/ 16 июля 2014

В моем случае это было то, что в приложение были включены и "mootools ujs" и "jquery ujs"Я избавился от mootools один, и теперь я вижу только одно подтверждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...