我正在尝试将模型中的数据导入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>
答案 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')
并检索信息。