2015-08-26 22 views
0

我想從我的模型中獲取數據到JavaScript數組中,但這似乎不起作用。在JavaScript數組中存儲Rails模型數據

<script type="text/javascript"> 
    var s_array = new Array(); 
    var img_array = new Array(); 
    var num_array = new Array(); 
    var x_array = new Array(); 
    var y_array = new Array(); 
    var p_array = new Array(); 

    <% @data.each do |data| %> 
    s_array.push(<%= (data.s) %>); 
    img_array.push(<%= (data.img) %>); 
    num_array.push(<%= (data.num) %>); 
    x_array.push(<%= (data.x) %>); 
    y_array.push(<%= (data.y) %>); 
    p_array.push(<%= (data.p) %>); 
    <% end %> 
</script> 
+1

對於字符串必須使用報價這樣行:s_array.push( 「<(%)=(data.s)%>」); – tauhidul35

+0

爲什麼不只是使用JSON?除此之外,不僅僅是鏡像JS中的數據已經令人懷疑 - 爲什麼在已經有對象的情況下使用單獨的數組? –

+0

@DaveNewton如何用JS訪問對象數據? – Senju

回答

2

不要在您的視圖中打印JS代碼。這會在你的前端和後端之間產生很強的耦合,這很醜陋。如果您想要一個簡單的方法,您可以使用數據標記並將模型的數據轉換爲JSON,然後您可以簡單地使用JS。

@data可以使用@data.to_json進行序列化。如果直接來自模型,請記住您可以覆蓋方法來控制Active Record對象如何呈現爲JSON對象。

在你的HTML,你可以再補充一個數據標籤。例如,你可以把這個在您的視圖:

<div id="data_model_name" data-your-data="<%= @data.to_json %>"> 

早在JS,你可以這樣做:

var yourData = $('#data_model_name').data('your-data') 

和檢索信息。

+0

謝謝,這是有道理的 – Senju