在java脚本rails中创建多个全局对象

时间:2016-12-16 16:22:30

标签: javascript jquery ruby-on-rails

我的相机控制器的@cameras方法中有一个实例对象为map,并且因为我的原因而从中得到的值很少

+    @cameras = load_user_cameras(true, false)
+    @map_data = []
+    @cameras.each do |camera|
+      @map_data[@map_data.length] = [
+        camera["name"],
+        camera["id"],
+        camera["owner"],
+        camera["is_online"],
+        camera["is_public"],
+        camera["vendor_id"],
+        camera["location"],
+        camera["vendor_name"],
+        thumbnail_url(camera)
+      ]
+    end

我想在我的map.html.erb

中做点什么
  window.Evercam.Camera = {
    id: '<%= @map_data['id'] %>',
    name:'<%= @map_data['name'] %>',
    is_online: <%= @map_data['is_online'] %>,
    vendor_id: '<%= @map_data['vendor_id'] %>',
 }

但是对于多个对象不仅单Evercam.Camera而且Evercam.Cameras因为@map_data中会有多个记录所以我想创建一个全局对象Evercam.Cameras来我可以完全分配整个对象@map_data?是否有可能..任何帮助都会感激不尽。

1 个答案:

答案 0 :(得分:0)

你正在使它变得比它需要的更难,在Rails中你可以使用to_json http://apidock.com/rails/Hash/to_json

在控制器中使用map它将对任何可枚举的东西起作用,并且正在做你正在做的同样的事情但更快更可靠。 https://ruby-doc.org/core-2.3.3/Enumerable.html#method-i-map

@cameras = load_user_cameras(true, false)
@map_data = @cameras.map do |camaras|
    ### This will be turned into json, so make sure the key is what you need later when you retrieve it in Javascript.
    id: camera['id'],
    name: camera['name']
    ### AND SO ON ... 
end

在erb中,to_json方法将获取您的枚举并将其转换为json对象。

window.Evercam.Cameras = <%= @map_data.to_json %>;