Escaping quotes from Rails Variables when using them for Javascript?

后端 未结 1 1917
野性不改
野性不改 2021-02-19 00:37

I am having problems when trying to use a rails variable within javascript code.

For example, I might define a link_to_remote, with parameter :complete => \"ale

1条回答
  •  借酒劲吻你
    2021-02-19 01:14

    when you try alert('I\'m testing'); there's a problem

    Backslash is also an escape in Ruby strings! So the string literal:

    "alert('I\'m testing');"
    

    means the string:

    alert('I'm testing');
    

    the backslash is gone already before JavaScript gets a look at it. When you are writing a JavaScript string literal inside a Ruby string literal you need to escape the escape, \\, to get a real \ that will then, in JavaScript, escape the apostrophe.

    escape_javascript correctly generates the backslash for JavaScript, if a backslash was included in its input. But again, if you're writing a string literal, you have to escape the backslash to get a real backslash:

    escape_javascript("\b")     -> this is a backspace character!
    escape_javascript("\\b")    -> this is backslash-then-letter-b;
                                   escaped for JavaScript literal to double-backslash-then-b.
    

    So, this is fine:

    "'"+escape_javascript(myvar)+"'"
    

    alternatively, you can use a JSON encoder to create the JavaScript string literal including the surrounding quotes.

    0 讨论(0)
提交回复
热议问题