2010-07-08 5 views
2

Quelle est la meilleure façon d'ajouter du JavaScript à mes vues Rails3? Je voudrais être en mesure de faire un peu de traitement dans un contrôleur, puis créer du code JavaScript basé sur le résultat et mettre le JavaScript résultant dans une vue. Par exemple, j'aimerais obtenir une série de points lat/lng d'une base de données et créer des marqueurs sur une carte Google Map. L'initialisation de la carte et les marqueurs doivent être créés en JavaScript, mais interagir avec la vue. (Ceci n'est qu'un exemple de ce que j'essaie d'accomplir Je ne cherche pas de recommandations de gemmes/plugins qui intègrent Google Maps).Comment ajouter du javascript personnalisé à mes rails3 vues?

Existe-t-il un moyen de rendre un fichier js.erb dans la tête d'une vue particulière? Quelle est la "façon de rails" de faire ce genre de chose?

Répondre

4

Si vous voulez ajouter le JavaScript avant que la page ne soit chargée du tout - c'est-à-dire pas Ajax - il n'y a pas de raison particulière pour créer un _javascript.html.erb partiel contenant les balises de script, puis faites le suivant votre point de vue:

<%= render 'javascript' %> 

le code _javascript.html.erb aurait accès aux variables d'instance définies dans votre contrôleur, et vous pourriez écrire de la même façon dans un fichier .js.erb.

(Vous pouvez utiliser <%= yield :head %> dans votre section de fichier de mise en page <head> puis <content_for :head do %><%= render 'javascript' %><% end %> dans votre point de vue, si vous voulez que le script soit dans le <head>.)

Si vous souhaitez exécuter le JavaScript sur une page suite à une requête Ajax, le simple fait de frapper le code dans votre fichier my_action.js.erb et d'interpoler <%= @my_instance_variable.value %> comme requis fonctionnera - le code résultant sera exécuté sur votre page après la fin de la requête.

Questions connexes