ruby-on-rails ActiveAdmin -自定义Javascript仅用于特定资源,不用于任何页面

unftdfkk  于 2023-03-09  发布在  Ruby
关注(0)|答案(3)|浏览(109)

我不是ActiveAdminMaven。我需要在一些索引页面上进行一些自定义。正如文档中推荐的那样,我正在尝试维护AA页面构建,然后使用Javascript对其进行自定义。我成功地将自己的Javascript文件放在app/assets/javascript下,然后附加

//=require my_javascript_file

到应用程序/资产/javascripts/活动管理. js
问题是这样的话,任何型号的任何索引页都会加载Javascript代码。哪种方法是只为特定型号插入Javascript代码的最佳方法?
谢谢托马斯

vfh0ocws

vfh0ocws1#

对我来说,工作如下:

form do |f|
  text_node javascript_include_tag "path_to/my_javascript_file"
...
svmlkihl

svmlkihl2#

我发现下面的代码在我的例子中运行得很好。我把下面的代码添加到config/initializers/assets.rb中:

sub_folder = 'page_assets'
specific_assets_path = Rails.root.join('app', 'assets', 'javascripts', sub_folder).to_path
Dir.glob("#{specific_assets_path}/*.{js,coffee}").entries.each { |file|
  asset = "#{sub_folder}/#{File.basename(file, File.extname(file))}.js"
  Rails.application.config.assets.precompile += [ asset ]
}

然后我把js和coffee文件放在app/assets/javascript/page_assets中,比如my_page.coffee
现在,我认为我还要补充:

<%=
  javascript_include_tag 'page_assets/my_page'
%>

我的视图是一个html.erb部分,但是这同样适用于my_page.rb文件中定义的页面。
我的active_admin. js只需要active_admin基,因为我不希望active_admin资产包含我的所有每页脚本:

//= require active_admin/base

这种机制的优点是当我添加一个新的每页脚本时,我不需要记住添加到预编译列表中--它是自动完成的。ActiveAdmin不会将我的page_assets脚本添加到active_admin. js主资源中(因为我在active_admin. js中没有require_tree .)

ffvjumwh

ffvjumwh3#

根据" Alexandria “的回答,
1.在表格do loop下添加以下行:
形式|f级|文本节点javascript包含标签“到/我的javascript文件的路径”结束
1.在confg/initializers/assets.rb中添加path_to/my_javascript_file以预编译它。
1.加
//= link path_to/my_javascript_file.js
assets/config/manifest.js

相关问题