2010-04-28 5 views
1

J'ai un formulaire avec une quantité de javascript associée de plus en plus importante. À l'heure actuelle ce javascript vit dans ma vue de formulaire ce qui est bien, mais il devient plus grand et commence à submerger le formulaire, ce qui rend difficile de travailler sur le formulaire. Je veux mettre cela dans un fichier séparé dans mon répertoire/public/javascripts mais beaucoup de javascript est généré par ruby ​​incorporé. Ce ruby ​​intégré est ignoré et transmis au navigateur si je viens de mettre le code ici.Existe-t-il un moyen d'exécuter ruby ​​incorporé dans un fichier javascript dans mon répertoire/public/javascripts?

Quelle est la meilleure manière (le cas échéant) de faire exécuter ce ruby ​​intégré et de générer le javascript de la même manière que si c'était à mon avis?

Répondre

2

Vous pouvez créer des modèles dynamiques erb pour javascript, mais ils ne vont pas dans le répertoire public/javascripts.

Je vous suggère de déplacer le javascript dans un partiel. Créez un fichier nommé _form_js.html.erb et placez le contenu de votre balise de script là. Puis <% = render: partial => 'form_js'%> à partir de votre vue. En guise de remarque, il est probable que vous feriez mieux d'utiliser un javascript complètement statique qui identifie les éléments du formulaire par leur classe/id et réagit à cela, plutôt que d'utiliser un javascript personnalisé pour chaque élément.

+0

Cela fonctionne parfaitement. Merci. Le seul problème que j'ai est que le code source de ma page contient tout mon javascript quand je l'ouvre dans le navigateur. Ce n'est pas un gros problème, mais j'aime bien que mes pages soient belles et minimes si quelqu'un jette un coup d'œil dans les coulisses. – brad

+1

C'est la façon préférée de le faire, oui. Je trouve que la meilleure solution pour cela est de donner les éléments dont vous avez besoin pour travailler avec les classes, et ensuite inclure un fichier javascript complètement statique qui utilise jQuery ou similaire pour identifier quels éléments doivent être modifiés. –

+0

Pour cette solution, il vous suffit de créer le fichier '_form_js.html.erb' dans le répertoire view, de rendre le partial de la vue, et de déplacer votre javascript de' application.js' vers le partial ??? –

1

Vous pouvez créer des modèles RJS et regrouper votre code Javascript dans les fichiers RJS. Référez: http://www.codyfauser.com/2005/11/20/rails-rjs-templates

+0

Hmm, ça semble un peu plus pour les trucs de type AJAX? Est-ce exact? Quoi qu'il en soit, je suis allé avec l'idée de user211722. Merci bien – brad