Gon-gem for ruby on rails监视函数监视所有变量

Gon gem for ruby on rails watch function watch all variables

本文关键字:监视 函数 变量 rails for ruby on Gon-gem      更新时间:2023-09-26

gon是ruby on rails将数据从控制器传递到视图的javascript的宝石。

它运行良好,只需传递数据并监视一个变量。

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

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

这导致刷新时间非常长(7kms以上)

网页总是挂起。

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

我的控制器中的代码

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.static=@nstaticgon.vstatic=@vstatic

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

为了使它只显示刷新部分,我删除了所有检索数据的功能。。。

也许这不是答案,但也许它在某种程度上有所帮助(注释太长),

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

gon.watch('test1', {interval: <ms>, url: '<url>'}, '<callback>')

为了检查ndataupdate操作中的可用变量,您可以编写:

gon.all_variables

你也可以尝试用清理变量

gon.clear