0

I’m using Rails 4.2.3. In my view, I want to output some JS, so I have this

<%
  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(",") %>];

but Rails keeps converting my apostrophes to “&#39;” characters and its causing “Uncaught SyntaxError: Unexpected token &” JS errors when the page renders. Here is an example of how the output looks

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]]; 

How do I prevent Rails from applying HTML escaping to characters for this page only?

  • the h helper method is what you need I think. Similar: http://stackoverflow.com/questions/692921/how-to-html-encode-escape-a-string-is-there-a-built-in – Crayon Jul 07 '16 at 15:14
  • I changed my line above to " var data = [<%=h js_data.join(",") %>];" but even after a server restart, it still renders with the escaped characters -- "var data = [[new Date('2011/10/23')).getTime(), 1286000],[new Date('2013/08/11')).getTime(), 2779000],[new Date('2013/10/26')).getTime(), 1288000],[new Date('2014/06/28')).getTime(), 2915000],[new Date('2014/09/07')).getTime(), 6256000],[new Date('2015/07/25')).getTime(), 2788000],[new Date('2015/08/22')).getTime(), 1488000]];" –  Jul 07 '16 at 15:19

1 Answers1

0

try this one instead

  <%= raw %>
Crayon
  • 39
  • 1
  • 6