2010-12-01 7 views
0

Cette ligne fonctionne très bienévasion javascript ne fonctionne pas avec link_to_function (rails)

 <%=link_to_function "name", "$('#thing_name').html('<p>name<p>')" %> 

Cette ligne ne

 <%=link_to_function "name", "$('#thing_name').html('<%= escape_javascript(thing.name) %>')" %> 

Puis-je me débarrasser de tout le contenu dans <% =% >

 <%=link_to_function "name", "$('#thing_name').html('<%= %>')" %> 

Il continue de se plaindre de certaines erreurs de compilation bizarres.

Merci d'avance.

Répondre

0

Vous êtes déjà dans un bloc ERB en raison de l'ouverture <%= au tout début, et vous ne pouvez pas en utiliser un autre. Utilisez string interpolation pour évaluer le code Ruby dans la chaîne:

<%= link_to_function "name", "$('#thing_name').html('#{escape_javascript(thing.name)}')" %> 

Alternativement, si pour une raison quelconque, vous ne voulez pas utiliser l'interpolation:

<%= link_to_function "name", "$('#thing_name').html('" + escape_javascript(thing.name) + "')" %> 
+0

Est-ce que la réponse ci-dessus fonctionnent dans des rails 3.1.0 ou au-dessus ? Je ne pouvais pas faire la réponse ci-dessus travailler sur mes rails 3.1.0 – user938363

-1

J'aurais pensé que vous avez besoin de sortir de la chaîne:

<%=link_to_function "name", "$('#thing_name').html('"<%= escape_javascript(things.name) %>"')" %> 

Notez les guillemets doubles autour <%= escape_javascript(things.name) %>

devrait travailler ... même si im encore un peu nouveau pour :) Erb