Estoy escribiendo una aplicación que usa Rails en el back-end y javascript/backbone en la interfaz. Estoy tratando de bootstrap some rails models into my javascript. Específicamente, me gustaría cargar el contenido de @courses
en una variable js llamada window.courses
. Tengo lo siguiente en un archivo html.erb
.¿Cómo tratar las entidades HTML en Rails to_json output?
<%= javascript_tag do %>
window.courses = JSON.parse('<%= @courses.to_json %>');
<% end %>
Estoy esperando la erb
preprocesador para hacer esto en javascript válida, al igual que
<script type="text/javascript">
//<![CDATA[
window.courses = JSON.parse('[{"code":"myCourseCode", ...
//]]>
</script>
... pero, en cambio, estoy recibiendo código que incluye HTML entities.
<script type="text/javascript">
//<![CDATA[
window.courses = JSON.parse('[{"code":"myCourseCode", ...
//]]>
</script>
Obviamente, obtengo errores de javascript cuando trato de analizar esto.
¿Alguien sabe cómo puedo tratar con estas entidades de HTML para producir javascript válido? Me doy cuenta de que una opción sería unescape the entities on the client side, pero esto parece una solución indirecta. ¿Hay alguna manera de que logre que Rails produzca JSON que no necesita unescaping?
Intenta usar '<% = raw (@ courses.to_json)%>' –
Brillante, gracias! Pensé que debe haber una manera simple de hacer esto. –
@dB '¿consideraría actualizar la respuesta aceptada? esto es muy inseguro y ha sido la fuente de muchas vulnerabilidades de scripts entre sitios. – oreoshake