У меня есть действие контроллера Rails, который инициализирует эту переменную:рубин переменная в JavaScript бросает ошибка синтаксиса
@print_url = new_batch_batch_content_template_path(@batch, @content_template)
Я пытался получить доступ к нему в шаблоне ERB, как «Using Ruby variable in Javascript (In App View)» говорит, что я могу сделать, так что я пытался :
<script type="text/javascript" charset="utf-8">
var url = <%= @print_url %>;
</script>
Однако консоль Chrome дает мне эту ошибку:
Uncaught SyntaxError: Invalid flags supplied to RegExp constructor '13'
Как вы можете видеть, это получить s интерпретируется JavaScript как регулярное выражение, потому что он не оценивается как строка. Почему Ruby не оценивает это как строку? Я не понимаю, почему пример в другой ссылке работает, но почему мой нет.
_ «Почему не рубин оценки это как строка?» _ - контекст ошибки не рубин, это JavaScript. И как мы снова пишем текстовые литералы в JS ...? – CBroe
@CBroe, вы правы, но в то время я ожидал, что это значение уже проанализировано как строка до того, как оно будет показано в javascript. – Donato
Независимо от того, обрабатывал ли Ruby его как строку здесь - JavaScript - это контекст, который вы вводите здесь здесь, и поэтому вам нужно рассматривать его в соответствии с синтаксическими правилами этого контекста. – CBroe