У меня есть проблемы при попытке использовать переменную направляющих в коде JavaScript.
Например, я мог бы определить link_to_remote с параметром :complete => "alert('my_var');"
Если my_var = "I'm testing."
, тогда код JavaScript повредится из-за одинарной кавычки, закрывающей код преждевременно. Если я пытаюсь использовать escape_javascript(my_var)
так, чтобы в кавычку превратились \'
, это, кажется, не решает проблему.
Я заметил это, когда Вы пробуете alert('I\'m testing');
существует проблема, но если Вы делаете alert('I\\'m testing')
, это работает. С тех пор escape_javascript только поворачивается '
в \'
, вместо \\'
, у кого-то есть предложение для того, как обработать это?
Спасибо! Eric
Когда вы пытаетесь
Alert («I \ m ж»);
Есть проблема
обратная косания также является побегом в рубиновых струнах! Таким образом, строковая буквальная буква:
"alert('I\'m testing');"
означает строку:
alert('I'm testing');
обратная косание уходит уже до того, как JavaScript посмотрите на него. Когда вы пишете JavaScript String Listal внутри Рубиновая строковая буквальная буква, вы должны избежать побега, \\
, чтобы получить реальный \
, которые тогда В JavaScript избегайте апостроф.
Escape_javascript
правильно генерирует обратную косание для JavaScript, если обратная косание было включено в его вход. Но опять же, если вы пишете строковую буквальную литерату, вы должны избежать обратной косои, чтобы получить настоящую обратную чехлу:
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.
Итак, это нормально:
"'"+escape_javascript(myvar)+"'"
. В качестве альтернативы вы можете использовать json Encoder для создания строки JavaScript в том числе окружающие цитаты.