如何防止 Rails 在我看来转义我的撇号?

Posted

技术标签:

【中文标题】如何防止 Rails 在我看来转义我的撇号?【英文标题】:How do I prevent Rails form escaping my apostraphes in my view? 【发布时间】:2016-07-07 14:59:43 【问题描述】:

我使用的是 Rails 4.2.3。在我看来,我想输出一些JS,所以我有这个

<%
  puts "size: #@user_my_objects.size"
  js_data = [] 
  @user_my_objects.each do |user_my_object|
    my_object_day_fmted = user_my_object.my_object.day.strftime("%Y/%m/%d")
    js_data.push( "[new Date('#my_object_day_fmted')).getTime(), #user_my_object.time_in_ms]" ) 
  end
%>
        var data = [<%= js_data.join(",") %>];

但 Rails 不断将我的撇号转换为“'”字符及其在页面呈现时导致“Uncaught SyntaxError: Unexpected token &” JS 错误。以下是输出外观的示例

var data = [[new Date(&#39;2011/10/23&#39;)).getTime(), 1286000],[new Date(&#39;2013/08/11&#39;)).getTime(), 2779000],[new Date(&#39;2013/10/26&#39;)).getTime(), 1288000],[new Date(&#39;2014/06/28&#39;)).getTime(), 2915000],[new Date(&#39;2014/09/07&#39;)).getTime(), 6256000],[new Date(&#39;2015/07/25&#39;)).getTime(), 2788000],[new Date(&#39;2015/08/22&#39;)).getTime(), 1488000]]; 

如何防止 Rails 仅将 html 转义应用于该页面的字符?

【问题讨论】:

我认为你需要的 h 辅助方法。类似:***.com/questions/692921/… 我将上面的行更改为“ var data = [];"但即使在服务器重新启动后,它仍然会使用转义字符呈现——“var data = [[new Date('2011/10/23')).getTime(), 1286000],[new Date ('2013/08/11')).getTime(), 2779000],[新日期('2013/10/26')).getTime(), 1288000],[新日期('2014/06/28')).getTime(), 2915000],[新日期('2014/09/07')).getTime(), 6256000] ,[新日期('2015/07/25')).getTime(), 2788000],[新日期('2015/08/22')).getTime(), 1488000]];" 【参考方案1】:

试试这个

  <%= raw %>

【讨论】:

以上是关于如何防止 Rails 在我看来转义我的撇号?的主要内容,如果未能解决你的问题,请参考以下文章

jsStringFormat() 和带有 JSON 的撇号

XPath 查询中的撇号 (')

将 ' 转换为 PHP 中的撇号

使用 Python 处理 sql 时的撇号 (') 帮助

前面没有\的撇号

如何防止 PHP PDO 通过 jQuery AJAX 插入 MySQL varchar 中的转义字符