簡體   English   中英

Gon Gem for Rails上的紅寶石觀看功能觀看所有變量

[英]Gon gem for ruby on rails watch function watch all variables

gon是用於ruby的寶石,可將數據從控制器傳遞到視圖的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將在此控制器中加載從數據庫檢索的所有數據,而不是其中的一部分。

為了使其只顯示刷新部分,我刪除了所有檢索數據功能...

也許不是答案,但也許會有所幫助(評論過長),

因此,您可以指定手動url來更新變量,例如:

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

為了檢查ndataupdate操作中的可用變量,您可以編寫:

gon.all_variables

您也可以嘗試使用以下方法清理變量:

gon.clear

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM