Sto scrivendo un'app che utilizza Rails sul backend e javascript/backbone sul frontend. Sto provando a bootstrap some rails models into my javascript. In particolare, vorrei caricare il contenuto di @courses
in una variabile js denominata window.courses
. Ho il seguente in un file html.erb
.Come gestire le entità HTML nell'output di Rails to_json?
<%= javascript_tag do %>
window.courses = JSON.parse('<%= @courses.to_json %>');
<% end %>
mi aspetto il preprocessore erb
per rendere questo in javascript valido, in questo modo
<script type="text/javascript">
//<![CDATA[
window.courses = JSON.parse('[{"code":"myCourseCode", ...
//]]>
</script>
... ma, invece, mi sto codice che include HTML entities.
<script type="text/javascript">
//<![CDATA[
window.courses = JSON.parse('[{"code":"myCourseCode", ...
//]]>
</script>
Ovviamente, ottengo errori JavaScript quando provo ad analizzare questo.
Qualcuno sa come posso gestire queste entità HTML per produrre javascript valido? Mi rendo conto che un'opzione sarebbe a unescape the entities on the client side, ma questa sembra una soluzione rotonda. C'è un modo per far sì che Rails produca JSON senza necessità di escape?
Provare a utilizzare '<% = raw (@ courses.to_json)%>' –
Brillante, grazie! Ho pensato che ci deve essere un modo semplice per farlo. –
@dB 'considera l'aggiornamento della risposta accettata? questo è molto pericoloso ed è stato la fonte di molte vulnerabilità di scripting cross-site. – oreoshake