2010-08-19 7 views
3

J'ai une bibliothèque de scripts que je voudrais implémenter du côté client de mon application rails;Inclure un dossier javascript public dans RAILS Views

Dans la vue, je sais que je peux faire ce qui suit.

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

Et parce qu'il y a tellement de fichiers de script séparés, ce processus est très fastidieux et redondant.

Je sais qu'il ya une technique pour inclure tous les scripts dans le public/javascript dossier

<%= javascript_include_tag :all %> 

Mais cela comprendrait les scripts indésirables en dehors du dossier de destination spécifiquement pour une vue.

Existe-t-il un moyen d'inclure uniquement tous les scripts dans un dossier spécifique?

Merci à l'avance

Répondre

3

Vous pouvez utiliser le javascript_include_tag standard avec la méthode Dir.glob pour inclure tous les fichiers dans un répertoire. Donc, quelque chose comme ceci devrait fonctionner:

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

http://github.com/sbecker/asset_packager

Ce regroupe tous vos javascripts en un seul fichier dans la production et les répertorie séparément dans le développement. Avec une tâche de rake, vous définissez tous vos javascripts et feuilles de style, ainsi que l'ordre dans lequel vous voulez les stocker. Une autre tâche les empaquette dans deux fichiers. Vraiment cool.

+0

Asset emballeur (et d'autres comme Jammit) supprimera aussi les commentaires, rapetisser source etc. Certainement la voie à suivre pour une application dans la production. En développement vos scripts sont chargés comme d'habitude. –

6

Il est construit directement dans Rails. L'utilisation de la réponse acceptée est de mauvais style. Veuillez utiliser ce qui suit:

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

L'utilisation de conditionneurs est idéale pour la production. Mais c'est la bonne façon de le faire dans un environnement de développement simple et léger.

+0

Pourquoi cela a-t-il été voté? – adu

+0

http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/javascript_include_tag – user1226868

0

Pour tous ceux qui utilisent Rails 3.1 ou plus récent, le asset pipeline est la solution idéale.

0

suite à des travaux pour moi

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 
Questions connexes