2012-12-04 2 views
1

Je suis un peu confus même après avoir passé par le Rails Asset Pipeline tutorial. J'essaie d'ajouter les derniers fichiers jquery. Est-ce que je fais cela via la disposition javascript_include_tag ou via le fichier application.js?ajouter des fichiers js à Rails3

Si oui, quelle est la différence et comment pourrais-je préciser le numéro de build réel si j'utilisais //= require jquery dans les application.js

<%= javascript_include_tag "http://ajax.googleapis.com/ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js", 
"jquery.rails.js", 
"application.js" 
%> 

La méthode ci-dessus ajoute jquery deux fois, une fois avec la ligne ci-dessus et via l'application.js

//= require jquery 

L'application nécessite l'obtention du fichier js à partir de la gemme installée. Dans mon Gemfile J'ai la ligne

gem 'jquery-rails' 

Ma question principale est où dois-je chargeais ma construction spécifique de jquery de.

Répondre

2

jquery-rails contient une version spécifique de jquery (quelle version dépendra de la version de la gemme), et c'est ce qui est inclus lorsque vous utilisez //= require jquery. Si vous faites cela, vous devez pas inclure jquery avec javascript_include_tag.

Si vous souhaitez utiliser une version différente de celle contenue dans la gemme jquery-rails, réglez-la dans le javascript_include_tag comme vous l'avez et laissez l'instruction //= require jquery. Pour expliquer un peu plus loin, la syntaxe //= require est utilisée par le pipeline d'actifs pour charger (et lorsqu'il est précompilé, fusionner aussi) des fichiers spécifiques lorsque le application.js est chargé. Parmi les principaux avantages de ceci sont la mise en cache et la livraison plus rapide pour le fichier de ressources unique. Inclure plusieurs scripts séparément en utilisant javascript_include_tag est une autre façon de charger le script, mais comme il ajoute une balise distincte <script> pour chaque fichier, il n'obtient pas l'avantage qui est offert par la syntaxe //= require. Pour les scripts CDN, cependant, les avantages perdus sont pour la plupart compensés. C'est parce qu'ils sont probablement déjà mis en cache par le client, sont servis très rapidement, et sont garantis pour ne pas être modifiés à l'avenir.

0

application.js

fichiers sont servis (comprimés et compilé) dans un seul fichier dans la production, ce qui signifie:

//= require my_file 

Vous obtenez:

<script ... src="/assets/application.js" ...> 

contenant mon_fichier dans application.js et compressé. Ceci est dans une configuration de production par défaut:

config.assets.compress = true # just to compress 
config.assets.compile = false # false to use precompiled assets, you precompile with rake assets:precompile 
           # true to allow compilation in production 

REMARQUE: precompile est de convertir des fichiers SCSS et café à css et javascript et les enregistrer sous le répertoire public, ne pas frapper backend Rails lorsque ces fichiers sont demandés.

javascript_include_tag

javascript_include_tag 'application', 'my_second_file' 

Vous obtenez:

<script ... src="/assets/application.js" ... > 
<script ... src="/assets/my_second_file.js" ... > 

Vous aurez my_first_file incorporé dans application.js si vous laissez //= require my_first_file.

Où mettre

Comme dans la production, vous ne serez pas le débogage, allez-vous ?, est bon de les mettre en application.js.

Questions connexes