Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轮询更改会在rails中生成重复的结果_Ruby On Rails_Ruby_Ruby On Rails 3_Jquery_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 轮询更改会在rails中生成重复的结果

Ruby on rails 轮询更改会在rails中生成重复的结果,ruby-on-rails,ruby,ruby-on-rails-3,jquery,ruby-on-rails-3.2,Ruby On Rails,Ruby,Ruby On Rails 3,Jquery,Ruby On Rails 3.2,我有一个问题的答案列表 每个响应在HTML中的数据时间戳属性中将自己的时间戳转换为整数(通过转换为) 我从最近的响应中提取数据时间戳值,然后将其传递给控制器,以便每隔5秒查询数据库以获得任何新的响应 问题是它总是返回最后一个响应。反复(即,它从不停止) 我一直追踪到这样一个事实:当我将在处创建的从数据库(采用datetime格式)转换为整数,然后再转换回Rails中的时间对象时,它会减少毫秒数,即: 最后一个响应的实际时间戳: 2013-01-07 14:30:00.610491 <di

我有一个问题的答案列表

每个响应在HTML中的
数据时间戳
属性中将自己的时间戳转换为整数(通过
转换为

我从最近的响应中提取
数据时间戳
值,然后将其传递给控制器,以便每隔5秒查询数据库以获得任何新的响应

问题是它总是返回最后一个响应。反复(即,它从不停止)

我一直追踪到这样一个事实:当我将在处创建的
从数据库(采用datetime格式)转换为整数,然后再转换回Rails中的时间对象时,它会减少毫秒数,即:

最后一个响应的实际时间戳:

2013-01-07 14:30:00.610491
<div class="row response" data-time="<%= @response.created_at.to_i %>">
Rails用于查询数据库的图形:

2013-01-07 14:30:00.000000
有没有办法解决这个问题

编辑:根据要求,这是我的代码:

这是我用来从上次响应中获取最新时间戳的内容:

2013-01-07 14:30:00.610491
<div class="row response" data-time="<%= @response.created_at.to_i %>">
然后,我在控制器中查询在此日期之后创建的所有响应:

def polling
  @responses = Response.where("created_at > ?", Time.at(params[:after].to_i))
end
我用过

@latest = YOURMODEL.where("created_at > ?", Time.at(params[:after].to_i + 1))
在过去轮询rails中的更改时获得了成功


抱歉,如果看不到您的更多代码,将无法提供更多帮助。好的,我通过以下方法解决了此问题:

我修改了div类,使其以毫秒为整数输出时间

<div class="row response" data-time="<%= @response.created_at.utc.strftime("%s%6N").to_i %>">
这为我提供了正确的毫秒查询:

Response Load (0.6ms)  SELECT "responses".* FROM "responses" WHERE ( created_at > '2013-01-08 08:49:28.832908')

显示您是如何“将创建的_at从数据库(采用datetime格式)转换为整数,然后再转换回Rails中的时间对象,它会切断毫秒数”您的数据库是否支持其datetime类型的毫秒精度?更新了post以显示代码。是的,数据库(postgres)支持datetime的毫秒精度。我曾考虑过这一点,但认为当两个响应在一秒钟内发布时可能会导致问题。它会不会忽略第二根柱子?