9
votes

Comment utiliser javascript_include_tag pour obtenir tous les scripts dans un dossier

J'aimerais utiliser JavaScript_include_tag pour saisir tous les scripts liés à toutes les affichages à l'aide de la récursion, qui a placé dans public / javascripts / vues . .

J'essaie javascript_include_tag "/ vues",: récursive => true , mais n'a pas ajouté de script.

Cordialement, Alexey Zakharov


0 commentaires

4 Réponses :


7
votes

Selon le Documentation API de Javascript_include_tag :

renvoie une étiquette de script HTML pour chacune des sources fournies.

Vous pouvez passer dans le nom de fichier (.js Extension est facultatif) des fichiers JavaScript existants dans votre répertoire public / JavaScripts pour l'inclusion dans la page en cours ou que vous pouvez transmettre le chemin complet relatif à votre racine de votre document.

Vous ne pouvez pas inclure de manière récursive tous les fichiers de votre répertoire. Cependant, vous pouvez toujours écrire quelque chose comme la ligne suivante: xxx


2 commentaires

Méthode que vous avez fournie avec erreur. Il crée des URL absolues aux fichiers. Ici, la version modifiée qui fonctionne: def collect_javascript_files (chemin) dir [config.javascripts_dir + fichier :: séparateur + chemin] .map {| S | s.sub (config.assets_dir, "")} fin


Comment obtenez-vous cela pour travailler? Je mets helper_mesthod: collect_js_files et votre fonction dans application_controller.rb, mais lorsque j'appelle = javascript_include_tag collect_js_files ("public / javascripts / dossier") dans mon html.haml il fait Rien (ligne vide dans le HTML généré), cela serait vraiment utile si cela fonctionne, merci!



0
votes

Vous pouvez utiliser

RAILS_ROOT/public/javascripts


0 commentaires

0
votes

Le code suivant (non optimisé) doit fonctionner dans des rails 3.0 ou plus

<%= javascript_include_tag Dir[Rails.root.join("public/javascripts/views/**/*.js")].map { |s| s.sub(Rails.root.join("public/javascripts/").to_s, "") } %>


1 commentaires

Cela fonctionne parfaitement pour moi. Merci beaucoup. Mes fichiers .js sont présents dans le dossier Javascripts / contrôles avec votre solution, il est capable d'ajouter tous les fichiers dans ce dossier.



5
votes

Une solution simple consiste à créer un nouveau fichier JS (appelé activate.js) et inclure les fichiers là-bas.

# < FolderWithFiles >/activate.js :

//= require_tree . 


0 commentaires