【问题标题】:How do I prevent Rails form escaping my apostraphes in my view?如何防止 Rails 在我看来转义我的撇号?
【发布时间】: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 辅助方法。类似:stackoverflow.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]];"

标签: javascript ruby-on-rails-4 view escaping special-characters


【解决方案1】:

试试这个

  <%= raw %>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多