2015-08-26 77 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