我正在編寫一個應用程序,在後端使用Rails,在前端使用javascript/backbone。我正在嘗試bootstrap some rails models into my javascript。具體來說,我想將@courses
的內容加載到名爲window.courses
的js變量中。我在html.erb
文件中獲得了以下內容。如何處理Rails to_json輸出中的HTML實體?
<%= javascript_tag do %>
window.courses = JSON.parse('<%= @courses.to_json %>');
<% end %>
我期待的erb
預處理器來渲染成有效的JavaScript這一點,像這樣
<script type="text/javascript">
//<![CDATA[
window.courses = JSON.parse('[{"code":"myCourseCode", ...
//]]>
</script>
...但是,相反,我得到的代碼,其中包括HTML entities。
<script type="text/javascript">
//<![CDATA[
window.courses = JSON.parse('[{"code":"myCourseCode", ...
//]]>
</script>
很顯然,我得到的JavaScript錯誤,當我嘗試解析此。
有誰知道我可以如何處理這些HTML實體爲了生成有效的JavaScript?我意識到一種選擇是unescape the entities on the client side,但這看起來像是一個迂迴的解決方案。有沒有一種方法可以讓Rails生成不需要忽略的JSON?
嘗試使用'<%= raw(@ courses.to_json)%>' –
輝煌,謝謝!我覺得必須有一個簡單的方法來做到這一點。 –
@dB'你會考慮更新接受的答案嗎?這是非常不安全的,並且一直是許多跨站腳本漏洞的來源。 – oreoshake