Activeadmin 停止我的 jQuery 工作

发布于 2024-12-25 20:27:04 字数 306 浏览 0 评论 0原文

我在我的应用程序中使用 jquery 拖放功能,效果很好。

然后我添加了 activeadmin,它停止了我的 jquery 工作。

我收到此错误

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

如果我从 active_admin.js 中删除此行,

//= require active_admin/base

它会再次开始工作。

有什么想法吗?

I'm using jquery drag and drop in my app and it works fine.

I then added activeadmin and it stops my jquery working.

I get this error

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

If I remove this line from active_admin.js

//= require active_admin/base

it starts working again.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鸩远一方 2025-01-01 20:27:04

尝试将您的 active_admin.js 文件移动到 Rails 项目的 vendor/assets/javascripts 文件夹中:应该没问题。

如果它对某人有帮助,请告诉我们!

问候

Try moving your active_admin.js file to the vendor/assets/javascripts folder of your Rails project : you should be fine.

Please let us know if it helped someone!

Regards

写给空气的情书 2025-01-01 20:27:04

如果您查看 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。要工作,您需要让活动管理在 active_admin.js 之前加载 application.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 在活动管理中加载时,您需要自己管理任何命名空间冲突。

If you look at the activeadmin base manifest file you'll see where the additional jquery load is called. The last call in the base manifest is to the activeadmin application manifest. Therefore there is an easy way to bypass the unwanted additional jquery load.

Change this line in you application's /app/assets/javascripts/active_admin.js:

//= require active_admin/base

To

//= require active_admin/application

That way active admin's javascript code will be loaded without reloading jquery.

Within the /admin space, active admin loads active_admin.js without loading application.js, so you need to load application.js there too. To work, you need to make active admin load application.js before active_admin.js. Add this to 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}

However, note that for this to work seamlessly, you may need all these declarations in your app's application.js manifest:

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

Also as application.js is being loaded within active admin, you need to manage any namespace conflicts yourself.

最终幸福 2025-01-01 20:27:04

我上面的代码有一个错误,所以我稍微调整了一下:

active admin 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 }

active admin js

  //= require active_admin/base

就是这样!

I had an error with the code above, so I tweaked mine a bit:

active admin 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 }

active admin js

  //= require active_admin/base

That's it!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文