Jquery 如何让Rails定期调用控制器方法
我有一个应用程序,它依赖于在控制器中调用web服务来获取数据。我想添加一个页面自动刷新内容的功能,即根据设定的时间段调用操作。我发现很多帖子都暗示了我的问题,我也尝试过Jquery 如何让Rails定期调用控制器方法,jquery,ruby-on-rails,ruby,ajax,Jquery,Ruby On Rails,Ruby,Ajax,我有一个应用程序,它依赖于在控制器中调用web服务来获取数据。我想添加一个页面自动刷新内容的功能,即根据设定的时间段调用操作。我发现很多帖子都暗示了我的问题,我也尝试过setInterval,但让我困惑的是,每次更新都会触发两次。以下是代码: $(document).ready( function(){ var loader = function(){ $('.container').load('/dashboard/index'); }; setInte
setInterval
,但让我困惑的是,每次更新都会触发两次。以下是代码:
$(document).ready(
function(){
var loader = function(){
$('.container').load('/dashboard/index');
};
setInterval(loader, 3000);
});
我觉得这是一个ajax问题,但我没有一个触发事件来通知更新。感谢您的帮助
我的控制器代码:
class DashboardController < ApplicationController
include ActionView::Helpers::NumberHelper
include FakeMaker
def index
@reports = fake_maker("report", 22)
@workstations = fake_maker("workstation", 8)
@data_sources = fake_maker("data_source", 2)
end
end
class仪表板控制器
伪造者阶级
module FakeMaker
SOURCE_A = "A"
SOURCE_B = "B"
TYPES_A = Faker::Lorem.words(num = 10)
TYPES_B = Faker::Lorem.words(num = 4)
def fake_maker(type, count)
fake = []
case type
when "report"
count.times { fake << fake_report }
when "workstation"
count.times { fake << fake_workstation }
when "data_source"
fake = fake_data_source
end
fake
end
def fake_report
report = { source: [SOURCE_A, SOURCE_B].sample,
count: number_with_delimiter(Faker::Number.number(5), :delimiter => ',') }
report[:type] = report[:source] == SOURCE_A ? TYPES_A.sample : TYPES_B.sample.capitalize
report
end
def fake_workstation
{ name: Faker::Lorem.word,
downloaded: number_with_delimiter(Faker::Number.number(3), :delimiter => ','),
available: number_with_delimiter(Faker::Number.number(5), :delimiter => ','),
last_connect: Random.rand(10.weeks).ago.strftime("%Y-%m-%d %H:%M:%S") }
end
def fake_data_source
data_sources = []
["A", "B"].each do |source|
data_sources << { type: source,
name: Faker::Internet.url,
status: ["UP", "DOWN"].sample }
end
data_sources
end
end
模块伪造者
来源_A=“A”
SOURCE_B=“B”
类型A=Faker::Lorem.words(num=10)
类型B=Faker::Lorem.words(num=4)
def制假器(类型、计数)
假=[]
案例类型
当“报告”
count.times{fake','),
可用:带分隔符的数字(Faker::number.number(5),:delimiter=>,),
上次连接:Random.rand(10.weeks).ago.strftime(“%Y-%m-%d%H:%m:%S”)}
结束
def伪_数据_源
数据源=[]
[“A”,“B”]每一个都是来源|
数据来源你能这样试试吗
$(document).ready(
function(){
setInterval(function(){
$('.container').load('/dashboard/index');
}, 3000);
});
试过了。它的行为方式相同。它第一次触发一次,每间隔快速连续触发两次。听起来像是应用程序代码问题。代码中的某些内容是在第一次更新后2次重新加载包含此JS代码的文件。你能检查你的代码流,看看它是否如预期的那样工作吗?这似乎是正确的@steve_gallagher,你能发布相应的控制器代码吗?