2014-09-12 3 views
0

У меня есть действие контроллера 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 не оценивает это как строку? Я не понимаю, почему пример в другой ссылке работает, но почему мой нет.

+1

_ «Почему не рубин оценки это как строка?» _ - контекст ошибки не рубин, это JavaScript. И как мы снова пишем текстовые литералы в JS ...? – CBroe

+0

@CBroe, вы правы, но в то время я ожидал, что это значение уже проанализировано как строка до того, как оно будет показано в javascript. – Donato

+1

Независимо от того, обрабатывал ли Ruby его как строку здесь - JavaScript - это контекст, который вы вводите здесь здесь, и поэтому вам нужно рассматривать его в соответствии с синтаксическими правилами этого контекста. – CBroe

ответ

1

Вы должны использовать кавычки значения:

<script type="text/javascript" charset="utf-8"> 
    var url = '<%= @print_url %>'; 
</script> 
Смежные вопросы