代码之家  ›  专栏  ›  技术社区  ›  James

如何让Rails不将转义引号呈现为\"

  •  6
  • James  · 技术社区  · 14 年前

    在我的布局中

    <% @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。我很感谢你的帮助。

    2 回复  |  直到 10 年前
        1
  •  11
  •   Daniel Beardsley    14 年前

    你在使用轨道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 }) });
    
        2
  •  1
  •   Eskim0    10 年前

    尝试将.html安全添加到视图中的字符串中。

    <%= "$(document).ready ( function() { $.jGrowl(\"#{p.message.html_safe}\", { sticky: true }) });" %>