2010-12-03 6 views
0

je « index » une action, que lorsqu'il est appelé par ajax, rend index.js qui rend une partie:Rails - Comment rendre js dans une réponse HTML

$("#content").html("<%= escape_javascript(render :partial => 'index') %>"); 

Comment puis-je faire la même chose se passe-t-il dans la réponse html? Je essayé:

format.html { render "index.js" } 

Et bien que je ne reçois pas d'erreur, le code js ne semble pas fonctionner, parce que la partie ne rend pas.

+0

Pourquoi voudriez-vous une réponse html pour retourner un fichier javascript? Je ne pense pas que le navigateur l'évalue correctement, puisque la requête attend le html. – Samo

+0

@Samo: Parfois (par exemple, jQuery), tout javascript trouvé dans les balises de script à l'intérieur de html est exécuté. – Swanand

+0

@Swanand: oui, mais 99miles renvoie un fichier javascript qui, je suppose, ne contient que du javascript. S'il y a des balises de script dans le fichier javascript, alors ce sont des balises html, donc le fichier ne devrait pas être un fichier .js. – Samo

Répondre

-1

Le rendu par défaut est un raccourci pour render :action => :action_name. Pour spécifier un chemin de système de fichiers, utilisez render :file => "index.js"

0

Avez-vous essayé d'encapsuler le script à l'intérieur de la balise <script>?

Votre index.html.erb ressemblerait à ceci:

<script type="text/javascript"> 
    $("#content").html("<%= escape_javascript(render :partial => 'index') %>"); 
</script> 
Questions connexes