Activeadmin останавливает мой JQuery работает

Я использую перетаскивание jquery в моем приложении, и оно отлично работает.

Затем я добавил activeadmin, и он перестает работать JQuery.

Я получаю эту ошибку

$(".draggable_article_image").draggable is not a function

Если я уберу эту строку из active_admin.js

//= require active_admin/base

это начинает работать снова.

Есть идеи?

3 ответа

Решение

Если вы посмотрите на файл базового манифеста activeadmin, то увидите, где вызывается дополнительная загрузка jquery. Последний вызов в базовом манифесте относится к манифесту приложения activeadmin. Поэтому существует простой способ обойти нежелательную дополнительную нагрузку jquery.

Измените эту строку в /app/assets/javascripts/active_admin.js вашего приложения:

//= require active_admin/base

к

//= require active_admin/application

Таким образом, код JavaScript активного администратора будет загружен без перезагрузки jquery.

В пространстве / admin активный администратор загружает active_admin.js без загрузки application.js, поэтому вам также необходимо загрузить туда application.js. Для работы необходимо активным администратором загрузить application.js до active_admin.js. Добавьте это в config/initializers/active_admin.rb:

current_javascripts = config.javascripts.clone
config.clear_javascripts! 
config.register_javascript 'application.js'
current_javascripts.reverse.each{|j| config.register_javascript j}

Однако обратите внимание, что для того, чтобы это работало без проблем, вам могут понадобиться все эти объявления в манифесте application.js вашего приложения:

//= require jquery
//= require jquery-ui
//= require jquery_ujs

Кроме того, поскольку application.js загружается внутри активного администратора, вам необходимо самостоятельно разрешать любые конфликты пространства имен.

Попробуйте переместить файл active_admin.js в папку vendor/assets/javascripts вашего проекта Rails: все будет в порядке.

Пожалуйста, дайте нам знать, если это помогло кому-то!

С уважением

У меня была ошибка с кодом выше, поэтому я немного подправил:

активный админ init:

  config.clear_javascripts!
  config.register_javascript 'admin/active_admin.js'

  current_javascripts = config.javascripts.clone
  config.clear_javascripts!
  config.register_javascript 'application.js'
  current_javascripts.each{ |j| config.register_javascript j }

активный админ

  //= require active_admin/base

Это оно!

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