8

在我的布局中,我有

<% @current_user.popups.each do |p| %>
  <% content_for :script do %>
    <%= "$(document).ready ( function() { $.jGrowl(\"#{p.message}\", { sticky: true }) });" %>
  <% end %>
<% end %>

然后在脚本部分我有

<%= yield :script %>

问题是这会将转义的引号呈现为,\&quot;而 javascript 不喜欢这样。

我怎样才能阻止这种情况发生?或者有另一种方法吗?我不能使用单引号,因为我想在消息中包含一些 html。我会很感激任何帮助。

4

2 回答 2

11

你在使用 Rails 3 吗?在 Rails 3 中,html转义是默认完成的,您必须每次都绕过它,如下所示:jdl 上面有正确的想法,但听起来您仍然有问题。

<% content_for :script do %>
  $(document).ready ( function() { $.jGrowl("<%= raw(p.message) %>", { sticky: true }) });
<% end %>

但更好的是通过 rails 提供的助手运行它:escape_javascript所以转义回车和引号

像这样:

$(document).ready ( function() { $.jGrowl("<%= raw(escape_javascript(p.message)) %>", { sticky: true }) });
于 2010-05-17T23:03:25.523 回答
1

尝试将 .html_safe 添加到视图中的字符串。

<%= "$(document).ready ( function() { $.jGrowl(\"#{p.message.html_safe}\", { sticky: true }) });" %>
于 2014-04-02T20:50:42.690 回答