Javascript with embedded Ruby: How to safely assign a ruby value to a javascript variable

javascript, ruby

Solution

I think I'd use a ruby JSON library on @ruby_var to get proper js syntax for the string and get rid of the '', fex.:

res = foo(<%= @ruby_var.to_json %>)

(after require "json"'ing, not entirely sure how to do that in the page or if the above syntax is correct as I havn't used that templating language)

(on the other hand, if JSON ever changed to be incompatible with js that'd break, but since a decent amount of code uses eval() to eval json I doubt that'd happen anytime soon)

Problem

I have this line in a javascript block in a page: ``` res = foo('<%= @ruby_var %>'); ``` What is the best way to handle the case where `@ruby_var` has a single-quote in it? Else it will break the JavaScript code.

Original source