2010-08-19 36 views
3

我有一個我想在我的rails應用程序客戶端實現的腳本庫;在RAILS中包含一個公共的javascript文件夾Views

在視圖中,我知道我可以執行以下操作。

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

而且因爲有這麼多獨立的腳本文件,這個過程是非常浪費時間和冗餘的。

我知道,有一種技術,包括在公共所有的腳本/ JavaScript的文件夾

<%= javascript_include_tag :all %> 

但是,這將包括不必要的腳本的目標文件夾以外的專門針對一個視圖。

有沒有辦法只包含特定文件夾中的所有腳本?

在此先感謝

回答

3

您可以使用標準javascript_include_tag和Dir.glob方法將所有文件包含在目錄中。所以,像這樣的東西應該工作:

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

http://github.com/sbecker/asset_packager

這種捆綁所有的JavaScript到一個文件中的生產和開發單獨列出。通過一個rake任務,您可以定義所有JavaScript和樣式表,以及您希望它們存儲的順序。另一個任務將它們打包成兩個文件。真的很酷。

+0

資產打包以下工作(以及其他類似Jammit)也將剝離的意見,當然再壓縮源等的路要走生產的應用程序。在開發中,你的腳本像往常一樣加載。 – 2010-08-20 03:45:52

6

它是內置到Rails。使用接受的答案是不好的風格。請使用以下內容:

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

使用打包機非常適合生產。但這是在一個簡單,輕量級的開發環境中實現它的正確方法。

+0

爲什麼這是低票? – adu 2012-02-27 05:43:22

+0

http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/javascript_include_tag – user1226868 2012-10-15 14:25:51

0

對於任何使用Rails 3.1或更新版本的人來說,asset pipeline是一條路。

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 
相關問題