使用Rails在视图中打印有效的,非转义的JSON

D-N*_*ice 12 javascript json ruby-on-rails ruby-on-rails-3.2

我已经尝试了一切.帮助者的每个组合raw,html_safe to_json包括与::JSON.encode和的一些尝试CGI.unescape.问题在于,无论我做什么,我都无法在视图中打印格式良好的JSON.它始终是HTML转义的.

这是我视图中的代码:

var campaignData<%= "=" + (raw @campaign.to_json) if @campaign %>;

就我而言,它始终是被引用的引号".我只会对引号做一个gsub,但这对于IMO应该是一个非常简单,记录良好的用例来说是一个可怕的解决方案.

Rom*_*man 33

这里的问题是"="字符串.因为它被认为是不安全的,它会污染另一个字符串.

你可以做任何一件事:

raw("=" + @campaign.to_json)
Run Code Online (Sandbox Code Playgroud)

要么

"= #{@campaign.to_json}".html_safe
Run Code Online (Sandbox Code Playgroud)

大致相同.


Jes*_*ham 10

从ActiveSupport 2.3.3开始,您就可以做到 .as_json


cut*_*ion 5

你试过escape_javascript吗?

这是*.haml文件中的一个示例,我刚刚添加它来测试我的答案.

:javascript
  var foo=$.parseJSON("#{j @albums.to_json}")
Run Code Online (Sandbox Code Playgroud)

j别的短别名在哪里escape_javascript.