在导轨中,如果我拨打"</script>".to_json
,则结果为"\"</script>\""
。无法使用尖括号或前斜线进行转义。有没有办法让to_json逃脱这些?
这个小小的erb片段演示了这个问题:
<%= javascript_tag do %>
var a = <%= raw("</script>".to_json) %>;
alert("hi");
<% end %>
这会产生以下输出:
<script type="text/javascript">
//<![CDATA[
var a = "</script>";
alert("hi");
//]]>
</script>
在这种情况下,脚本标记会过早关闭。任何人都有一个很好的解决方案?
答案 0 :(得分:6)
可以使用JSON.parse()删除斜杠。
首先,您需要从正在获得的响应中提取正文。
response_body = response_you_get_after_request.body
然后将响应作为参数传递如下: -
filtered_response = JSON.parse(response_body).
答案 1 :(得分:0)
<%= raw escape_javascript("</script>".to_json) %>
...产生
\"<\/script>\"
这是你要找的吗?