【问题标题】:How to change ruby variable value every second?如何每秒更改 ruby​​ 变量值?
【发布时间】:2012-09-14 10:24:25
【问题描述】:

我有这样的问题:我想显示计数器,它每秒都会改变,所以我需要更改我将在 jQuery 中使用的 Ruby 变量。

编辑:我想制作计数器,这对所有用户都是一样的。

我有 counter.json.erb 文件:

 {
 "count": <%= @counter%>
 }

和行动:

def counter
 @counter //here I need to change variable
 respond_to do |format|
 format.jsonr do
  render :json 
   end
 end
end

我正在使用 jQuery 获取这个变量:

$.getJSON('http://127.0.0.1:3000/counter.json', function(data) {
    alert(data.count);//alert just for testing
})

编辑:建议代码:

     var counter = 0
     $(document).ready(function(){
var myCounter = new flipCounter('counter', {value:counter});
$.getJSON('http://127.0.0.1:3000/counter.json', function(data) {
 myCounter.setValue(data.count);
})
});  

   setInterval(function() {
    $.getJSON('http://127.0.0.1:3000/counter.json', function(data) {
 myCounter.setValue(data.count);
   }, 1000);

我得到错误:

 Uncaught SyntaxError: Unexpected end of input application.js:1

也许有人可以提出一些建议?也许其他解决方案?

【问题讨论】:

  • 为什么你的服务器上的 Ruby 中需要这个计数器?使用 jQuery 在客户端执行此操作会更好吗?
  • @Bjoernsen 也许他希望它独立于客户端(您肯定知道 JavaScript 很容易被黑客入侵),例如每秒更改某种安全密钥。
  • @Bjoernsen,请查看更新后的问题。
  • @freakish,请看更新的问题,也许你会更好地理解它。
  • 您是指访问计数器还是计时器?

标签: jquery ruby-on-rails json


【解决方案1】:

您实际上不需要“每秒更改一次变量”。比这简单得多:

  1. 选择开始时间(或结束时间)并将值存储在某处
  2. 随时取当前时间
  3. 计算两者之间的差异

完成。您可以随时重复此算法并始终获取计时器的当前状态。

【讨论】:

  • deceze,还有一件事 - 如何更新不加载文档的值?
  • “不加载文档”?什么意思?
  • 我的意思是动态的。使用ajax请求或应该如何完成?
  • 您也可以完全按照我在 Javascript 中的回答中描述的方式进行操作。服务器将开始/结束时间传递给页面一次。然后只需使用 setInterval 在 Javascript 中循环,每 x 秒更新一次计时器。
  • 我使用 jSon 从 erb.json 文件中获取数据。我会告诉你我的代码,我写的和我得到的错误,你能看一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 2016-05-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多