【发布时间】:2012-10-08 19:20:06
【问题描述】:
我正在编写一个应用程序,它在后端使用 Rails,在前端使用 javascript/backbone。我正在尝试bootstrap some rails models into my javascript。具体来说,我想将@courses 的内容加载到一个名为window.courses 的js 变量中。我在html.erb 文件中有以下内容。
<%= 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' 你会考虑更新接受的答案吗?这是非常不安全的,并且是许多跨站点脚本漏洞的根源。
标签: javascript ruby-on-rails json