在RAILS Views中包含一个公共javascript文件夹

时间:2010-08-19 22:14:36

标签: ruby-on-rails

我有一个脚本库,我想在我的rails应用程序的客户端实现;

在视图中,我知道我可以执行以下操作。

<%= javascript_include_tag 'folder/script.js' %>
..

因为有太多单独的脚本文件,所以这个过程非常浪费时间和冗余。

我知道有一种技术可以将所有脚本包含在public / javascript文件夹中

<%= javascript_include_tag :all %>

但是这会包含目标文件夹之外的不需要的脚本,专门用于一个View。

有没有办法只包含特定文件夹中的所有脚本?

提前致谢

5 个答案:

答案 0 :(得分:6)

它内置于Rails中。使用接受的答案是糟糕的风格。请使用以下内容:

<%= javascript_include_tag :all, :recursive => true %>

使用包装工具非常适合生产。但这是在简单,轻量级的开发环境中实现它的正确方法。

答案 1 :(得分:3)

您可以使用标准的javascript_include_tag和Dir.glob方法将所有文件包含在目录中。所以,这样的事情应该有效:

<%= javascript_include_tag Dir.chdir(File.join(Rails.root, "public", "javascripts", "your", "subdiretory")) { |d| Dir.glob("*.js") } %>

答案 2 :(得分:1)

http://github.com/sbecker/asset_packager

将所有javascripts捆绑到生产中的一个文件中,并在开发中单独列出它们。使用一个rake任务,您可以定义所有javascripts和样式表,以及您希望它们存储的顺序。另一个任务将它们打包成两个文件。真的很酷。

答案 3 :(得分:0)

对于使用Rails 3.1或更新版本的任何人来说,asset pipeline是可行的方法。

答案 4 :(得分:0)

以下为我工作

def include_folder_javascripts(path)
    output = []
    Dir.chdir(File.join(Rails.root, path)) { |d|
      output << Dir.glob("*.js").map{|js| javascript_include_tag('calendar_date_select/'+js)}.join
    }
    raw output * "\n"
  end