Je préfère de beaucoup avoir l'apparence de rendement de la mise en page comme ceci:
<html>
<!-- other stuff -->
<body>
<!-- other stuff -->
<%= yield :javascript %>
</body>
</html>
Ensuite, dans une vue, vous pouvez écrire:
<% content_for :javascript do %>
<script type='text/javascript'>
function doMagic() {
//Mind-blowing awesome code here
}
</script>
<% end %>
<!-- More view Code -->
<%= render :partial => "sub_view_with_javascript" %>
Et dans le _sub_view_with_javascript.html.erb partiel, vous pouvez également écrire:
<% content_for :javascript do %>
<script type='test/javascript'>
function DoMoreMaths() {
return 3+3;
}
</script>
<% end %>
Mon raisonnement pour cette approche est que le rendement et content_for sont différents fichiers nt. Il n'est pas DRY de mettre le tag de script pour chaque contenu_for mais il permet à la syntaxe highlighter de reconnaître le changement de langue dans chaque fichier et m'aide là-bas.
Si vous avez plusieurs contenus_pour des appels dans un seul fichier vers le même symbole (dans notre cas,: javascript), je considérerais de les consolider tous vers le haut, mais c'est parfait pour les partiels.
Et HTML est parfaitement heureux d'avoir autant de blocs de script que vous le souhaitez. Le seul gotcha possible est de travailler avec le code dans les outils de développement comme firebug, il faut un peu plus de temps pour trouver le bon bloc de script pour votre fonction. Cela ne se produit que lorsque j'ai besoin de définir un point d'arrêt javascript pour déboguer.
Quel est votre cas d'utilisation? Est-ce js généré dynamiquement? – jonnii
Quel serait un exemple de js généré dynamiquement? Parfois, j'ai besoin de passer des variables d'une vue à une fonction javascript au moment de l'exécution. – TenJack