使用javascript_include_tag和一个充满JS的子文件夹

我在/public/javascripts/test下的文件夹中有一堆Javascripts,我想在尽可能少的行中使用javascript_include_tag将它们包含在我的布局中。

目前我使用javascript_include_tag有25行代码,有没有办法更好地做到这一点? 另外我不能使用javascript_include_tag :all :recursive因为在其他目录中有一些我不想包含的JS文件。

谢谢您的帮助。

更新:所以现在我有一个javascript.rb初始化程序,它具有这一行代码(非常长):

 ActionView::Helpers::AssetTagHelper.register_javascript_expansion :syntax_highlight => Dir["#{Rails.root.to_s}/public/javascripts/sh/*.js"].each {|js| js.gsub!("#{Rails.root.to_s}/public/javascripts/",'')} 

现在在我的布局中,我有以下内容:

  

现在当我渲染页面时,我得到以下内容:

                             

但由于某种原因,这一切都无效吗? 是什么赋予了?

可能还有更好的解决方案,但这仍然可以解决问题:

 Dir["#{Rails.root.to_s}/public/javascripts/test/*.js"].each {|js_file| javascript_include_tag js_file } 

试试这个

在config / application.rb中

取消注释这一行

 config.action_view.javascript_expansions[:defaults] = %w(javascript1.js javascript2.js) 

并添加文件的名称,如javascrip1.js和javascrip2t.js等。

然后在视图/布局中添加此行

 <%= javascript_include_tag :defaults %> 

Vlad Khomich的回答也很棒,也会奏效。

考虑到你包含了很多js文件,我假设你想要在公共目录下包含所有js文件。 如果是这种情况,您可以更改javascript_include_tag ,如下所示,它将帮助您将整个文件作为生产文件提供,从而节省大量请求:

 javascript_include_tag :all, :recursive => true, :cache => true 

如果您想单独处理测试文件,可以使用register_javascript_expansion ,例如:defaults ,还可以使用Vlad Khomich的答案中的代码。

 # config/init/javascript.rb ActionView::Helpers::AssetTagHelper.register_javascript_expansion :tests => [array_of_js_paths_from_previous_answer] # application.html.erb <%= javascript_include_tag :tests, :cache => :tests %>