質問に対する回答のリストがあります。
各応答には、HTMLto_i
の属性で(を介して)整数に変換された独自のタイムスタンプがあります。data-timestamp
最新data-timestamp
の応答から値を取得し、これをコントローラーに渡して、5秒ごとにデータベースに新しい応答を照会します。
問題は、最後の応答を返し続けることです。繰り返します(つまり、停止することはありません)。
これを追跡してcreated_at
、データベース(日時形式)から整数に変換してから、Railsの時間オブジェクトに戻すと、ミリ秒が切り捨てられるという事実にたどり着きました。
最後の応答の実際のタイムスタンプ:
2013-01-07 14:30:00.610491
Railsがデータベースのクエリに使用している図:
2013-01-07 14:30:00.000000
これをどのように解決できるかについてのアイデアはありますか?
編集:リクエストとしてここに私のコードがあります:
これは、最後の応答から最新のタイムスタンプを取得するために使用するものです。
<div class="row response" data-time="<%= @response.created_at.to_i %>">
次に、これをJavascriptを介してパラメーターとしてコントローラーに渡します(応答は時系列の逆順であるため、最新の応答が最初になります)。
function updateResponses() {
var after = $('.response:first').attr('data-time');
$.getScript("/responses/polling.js?after=" + after);
}
次に、コントローラーで、この日付以降に作成されたすべての応答を照会します。
def polling
@responses = Response.where("created_at > ?", Time.at(params[:after].to_i))
end