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
Это оно!