2012-06-06 29 views
7

我有一個Ruby的數組像這樣在我的控制器:從Ruby數組到Rails中的JS數組 - 'quote'?

@location_list = [ 
     ['Mushrooms', 3], 
     ['Onions', 1], 
     ['Olives', 1], 
     ['Zucchini', 1], 
     ['Pepperoni', 2] 
     ] 

而且我在我看來趕上這樣的:

location_list = "<%= @location_list.to_json %>"; 

但是,如果我做的警報(location_list),我得到:

[[&quot;Mushrooms&quot;,3],[&quot;Onions&quot;,1],[&quot;Olives&quot;,1],[&quot;Zucchini&quot;,1],[&quot;Pepperoni&quot;,2]] 

我該如何獲得沒有那些&的通訊對象?

回答

25

嘗試:

<%= raw @location_list.as_json %> 

使用to_json最終會呈現一個字符串,嵌入雙引號,並且將需要JS-逃脫。這將是一個字符串,而不是一個數組。

+0

我試過了。主要的問題是,在做raw或者html_safe時,當我嘗試使用這個var的時候,我會看到'Unexpected identifier'(在控制檯中)。儘管如果我看到源代碼,我可以看到:var location_list =「[[」蘑菇「,3],[」洋蔥「,1],[」橄欖「,1],[」西葫蘆「,1] 「辣」,2]]「; console.log(location_list); - 會發生什麼? –

+0

@HommerSmith你如何使用它?另外,如果它實際上是這樣引用的,它是一個字符串 - 不是數組;你嘗試過'as_json'嗎? –

+0

我只是試圖在控制檯中顯示它...基本上我想從Ruby傳遞數組到JS ...如果我將ruby數組更改爲像這樣:@location_list = [1,3,4] - - 我沒有得到那個錯誤。恰好當數組中有字符串時,我在我的Chrome控制檯中得到了'Unexpected identifier'。 –

-1

這爲我工作:

<%= @location_list.to_s.gsub(''', '') %> 

基本上使用.to_s整個數組轉換爲字符串,然後使用.gsub(''','')用什麼代替他們刪除引號。

+0

爲什麼downvote? – andrewcockerham