在JavaScript数组中存储Rails模型数据

时间:2015-08-26 15:16:19

标签: javascript ruby-on-rails

我正在尝试将模型中的数据导入JavaScript数组,但这似乎不起作用。

<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 个答案:

答案 0 :(得分:2)

不要在您的视图中打印JS代码。这会在你的前端和后端之间产生强烈的耦合,而且很难看。如果您想要一个简单的方法,您可以使用数据标签并将您的模型数据转换为JSON,然后您可以在JS中使用它。

@data可以使用@data.to_json序列化。如果它直接来自模型,请记住您可以覆盖as_json(options)方法来控制Active Record对象如何呈现为JSON对象。

在HTML中,您只需添加数据标记即可。例如,您可以将其放在视图中:

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

回到JS,您可以这样做:

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

并检索信息。