gon是ruby on rails的一个宝石,用于将数据从控制器传递到查看的javascript。
它工作正常,只传递数据,并观察一个变量。
但是当我有正常的数据(不需要动态监视)和data1(需要观察)时,问题就出现了。
Gon观察所有变量,而不是仅观看gon.watch.data1。
这导致刷新时间非常长(7k ms加上)
网页总是挂起。
以前有人遇到过这个问题吗?怎么解决这个?我控制器中的代码
class GmapsController < ApplicationController
def index
@i=0
@Nstatic=Array.new(NoiseDevice.all.length) {Array.new(4)}
@Vstatic=Array.new(VibrationDevice.all.length) {Array.new(4)}
@vabrdevices = VibrationDevice.find(:all)
@vabrdevices.each do |vabrdevice|
@Vstatic[@i][0]=Project.where(id: vabrdevice.project_id).pluck(:client_name).first.to_s
@Vstatic[@i][1]=vabrdevice.latitude #
@Vstatic[@i][2]=vabrdevice.longitude #
@Vstatic[@i][3]=VibrationDevice.where(id: vabrdevice.id).pluck(:cont_value).first.to_s
@i+=1
end
@i=0
@noiseDevices = NoiseDevice.find(:all)
@noiseDevices.each do |noiseDevice|
@Nstatic[@i][0]=Project.where(id: noiseDevice.project_id).pluck(:client_name).first.to_s
address=Project.where(id: noiseDevice.project_id).pluck(:jobsite_location).first.gsub(/\s+/, "+")
@Nstatic[@i][1]=noiseDevice.latitude #
@Nstatic[@i][2]=noiseDevice.longitude #
@Nstatic[@i][3]=NoiseDatum.order(:updated_at).where(noise_device_id: noiseDevice.id).pluck(:leq).first.to_s
@i+=1
end
gon.nstatic=@Nstatic
gon.vstatic=@Vstatic
end
def ndataupdate
@test=Array.new
@test=VibrationDevice.pluck(:cont_value).to_s
gon.watch.test1=@test
end
end
它不是仅更新我的test1,而是更新从该控制器中的数据库加载的所有数据。即使我删除
gon.nstatic=@Nstatic gon.vstatic=@Vstatic
gon将加载从此控制器中的数据库检索的所有数据,而不是其中的一部分。
为了使其仅显示刷新部分,我删除所有检索数据功能......
答案 0 :(得分:1)
也许这不是答案,但也许它有点帮助(评论太长),
所以,您可以指定manualy url
来更新变量,如:
gon.watch('test1', {interval: <ms>, url: '<url>'}, '<callback>')
用于检查您可以编写的ndataupdate
操作中的可用变量:
gon.all_variables
你也可以尝试用以下方法清理变量:
gon.clear