Javascript rubyonrails监视函数的gonggem监视所有变量

Javascript rubyonrails监视函数的gonggem监视所有变量,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,gon是RubyonRails将数据从控制器传递到视图javascript的一块宝石 它工作正常,只需传递数据,并观察一个变量 但当我有正常数据(不需要动态监视)和数据1(需要监视)时,问题就发生了 Gon监视所有变量,而不是仅监视Gon.watch.data1 这会导致刷新时间非常长(7k毫秒以上) 网页总是挂起 以前有人面临过这个问题吗?如何解决这个问题 我的控制器中的代码 class GmapsController < ApplicationController def inde

gon是RubyonRails将数据从控制器传递到视图javascript的一块宝石

它工作正常,只需传递数据,并观察一个变量

但当我有正常数据(不需要动态监视)和数据1(需要监视)时,问题就发生了

Gon监视所有变量,而不是仅监视Gon.watch.data1

这会导致刷新时间非常长(7k毫秒以上)

网页总是挂起

以前有人面临过这个问题吗?如何解决这个问题

我的控制器中的代码

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
class GmapsController
它不只是更新我的test1,而是更新从该控制器中的数据库加载的所有数据。即使我删除

gon.nstatic=@nstatic gon.vstatic=@vstatic

gon将加载此控制器中从数据库检索到的所有数据,而不是其中的一部分


为了使其仅显示刷新部分,我删除了所有检索数据功能…

可能不是答案,但可能有帮助(注释太长)

因此,您可以手动指定
url
来更新变量,如:

gon.watch('test1', {interval: <ms>, url: '<url>'}, '<callback>')
您还可以尝试使用以下方法清理变量:

gon.clear

你能写下你的控制器中有什么吗?@IS04更新了我的控制器代码
nDaudUpdate
你的控制器中有单独的操作吗?当你调用类似于
gon.watch('test1',interval:1000,'callback method')的东西时,
你得到了所有的数据吗?@IS04是的,我尝试分离,因为我怀疑把它们放在相同的操作中会导致gon刷新所有。现在分离的gon也会观察所有的数据。我从ROR日志中读取,每次刷新时,它都会加载包括此test1数据在内的所有数据。这导致它需要很长时间。您可以尝试编写
gon.watch('test1',{interval:1000,url:'url to your ndatupdate'},callback)
,它使用哪个url获取更新?您还可以检查
gon。所有变量
哪些变量在您的
ndatupdate
操作中,甚至可以尝试
gon。在设置watch variable之前清除
。我可以进一步调试,我发现即使我删除了gon.nstatic和gon.vstatic,它仍然会加载所有数据——除非我删除了控制器中的load-nstatic和vstatic数据。我将编辑我的问题
gon.clear