Ruby on rails 轮询更改会在rails中生成重复的结果
我有一个问题的答案列表 每个响应在HTML中的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
数据时间戳
属性中将自己的时间戳转换为整数(通过转换为
)
我从最近的响应中提取数据时间戳
值,然后将其传递给控制器,以便每隔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的毫秒精度。我曾考虑过这一点,但认为当两个响应在一秒钟内发布时可能会导致问题。它会不会忽略第二根柱子?