2014-09-12 110 views
0

我有一個初始化這個變量Rails控制器動作:Ruby的變量拋出語法錯誤

@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' 

正如你所看到的,它得到被JavaScript解釋爲一個正則表達式,因爲它不被評估爲一個字符串。爲什麼Ruby不會將它評估爲字符串?我不明白爲什麼在其他鏈接的例子工作,但爲什麼我不這樣做。

+1

_「爲什麼不是紅寶石評價這是一個字符串?」 _ - 錯誤的情況下是不是紅寶石,它的JavaScript。我們又如何在JS中編寫文本文字......? – CBroe 2014-09-12 23:08:47

+0

@Croro你是對的,但在那個時候,我期待這個值已經被解析爲字符串,然後用javascript呈現。 – Donato 2014-09-13 01:37:32

+1

是否將ruby解析爲字符串在這裏並不重要 - JavaScript是將值引入此處的上下文,因此您必須根據該上下文的語法規則對待它。 – CBroe 2014-09-13 01:52:23

回答

1

您需要使用圍繞價值語錄:

<script type="text/javascript" charset="utf-8"> 
    var url = '<%= @print_url %>'; 
</script>