Rails 请教 将 ruby 的嵌套 Array 在 Javascript function 中使用

kevinjry · 2014年11月20日 · 最后由 kevinjry 回复于 2014年11月24日 · 1905 次阅读

大家好,工作中遇到个问题,想请教各位,如题

in Ruby :

<% _points = Array.new %>

<% @users.each do |user| %>
    <% _points.push([user.latitude, user.longitude]) %>
<% end %>

这个数组应该是这样的 : _points = [ [123.2231, 212.3222],[13.2323, 21.2312312],........ ]

我想直接在一个 javascript fonction 使用 _points 数组,so :

<script>
    var points = new Array();
    points = <%=raw _points%>;

    for (x in points) {
      setInterval(function () {
        var b = new R.BezierAnim([points[x], citylatlon], {}, function () {

        .......................

      }, 4000);
    }
</script> 

最终结果是 ruby 的 _points 转为 js 之后,变成了:

points = [123.2231, 212.3222,13.2323, 21.2312312,.......]

求助,有什么简单有效的方法可以在这种情况下转换数组吗?

var a = new Array([1,2],[3,4]) 这样可以吗?貌似是 JS 的二维数组创建方法的问题。

var points = new Array(<%=raw _points.to_s.gsub(/\A\[|\]\Z/,"") %>)

觉得这个处理方法好烂啊!

3 楼 已删除
var points = new Array(<%=raw _points.map{|a| a.to_s}.join(",") %>)

#2 楼 @w7938940 这样输出以后还是不能创建二维数组

为什么不试试 JSON:


var points = <%= raw _points.to_json %>

#4 楼 @windstill #6 楼 @lyfi2003 #1 楼 @w7938940

谢谢各位

最后得出结果 >>

var points = <%=_points.to_json%> ;

    $(document).ready(function () {
                points.forEach(function (x, index, arr) {
                            animation_voyage(x);
                        }
                )
            }
    );

这样是可以的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号