2010-12-19 80 views
0

我需要得到一個紅寶石數組到一個javascript數組,我得到一個分析錯誤。json,rails,解析javascript中的錯誤

var characters = <%= @poop.to_json %>; 

這就是我如何嵌入到嵌入式JavaScript的紅寶石,它會出現一個解析錯誤。我應該如何獲得這個紅寶石數組到JavaScript?

我將它嵌入到.html.erb文件中,所以ruby應該在javascript之前獲取變量。

這是Safari瀏覽器控制檯顯示:

alt text

更新

我有一種形式,有三個領域的JS,CSS和HTML分別所以我願意把我的JavaScript的形式然後將它放入標題中。

<head> 
    <%= @game.javascript %> 
</head> 

所以你可以看到我在JavaScript中嵌入紅寶石,這是一個Ruby對象的輸出,使紅寶石的原因,沒有得到它首先是,它已經得到了它,並處理<% =%>就像另一個字符串。

啊,我投票給你們所有人的幫助。謝謝!

+0

把它放在一個單獨的Ruby腳本中,併發送適當的內容類型標題。 – 2010-12-19 23:57:26

+0

使這個答案和更多的解釋請:) – s84 2010-12-20 00:06:23

+0

你能告訴我們一個更長的代碼示例?如果這是一個erb文件,我不明白爲什麼'<%='沒有被解析。 – Skilldrick 2010-12-20 00:11:53

回答

4

您正在處理.js文件,就像.erb文件 - 事實並非如此。 JavaScript不會解析JavaScript文件 - public中的任何內容都是按原樣發送的。

@poop加入JavaScript的一種方法是使Rails動作呈現json,然後使用XHR加載該動作。

或者,您可以在<script>標記的HTML模板中輸出@poop,然後從JavaScript中加載該腳本標記的內容。

+0

我假設它是一個js.erb文件或內聯JavaScript。 – mark 2010-12-20 00:00:09

+0

我將它嵌入到.html.erb – s84 2010-12-20 00:02:36

+0

@Sam - 這很奇怪 - 我不明白'<%= %>'文本是如何進入Safari而不被解析的。 – Skilldrick 2010-12-20 00:04:38

0
var characters = "<%= @poop.to_json -%>"; 
+0

我沒有downvote,但這沒有奏效。 – s84 2010-12-20 00:04:35

+0

JavaScript中的Ruby語法? (我沒有downvote) – Skilldrick 2010-12-20 00:05:14

+0

我看着它在這裏工作,但也許這就是哈姆。嘗試使用「<%= -%>」。 @skilldrick,js.erb可以正常工作,因爲內嵌javascript。至於downvoter,評論!在這個問題中沒有提到最佳做法。 – mark 2010-12-20 00:06:14

2

理想情況下,我們需要更多的信息來正確回答,但我會猜測一些東西來幫助你......

假設1:您正在使用ERB語法(那些「<%=」和「%>」).js文件中。這些不會被Rails解析爲任何有意義的東西。

你想做什麼,是在你的模板或視圖中使用內聯JS。從其他語言生成Javascript可能會非常棘手,請謹慎使用。

+0

我正在使用.html.erb – s84 2010-12-20 00:04:58