私は一種の初心者なので、我慢してください!
ユーザーがダッシュボードにサインインしているときに、jQueryがX秒ごとにサーバーに定期的にpingを実行し、ユーザーの「ハートビート」を現在の日時で更新し、「オンライン」をtrueに設定しようとしています。
私はおそらくいくつかのRESTfulな概念とjQueryとRails間の通信を含む概念を見逃しています。MichaelHartlのRubyonRailsチュートリアルを終了し、彼のサンプルアプリを構築しています。
私は調査を行いましたが、答えは主にフォームへの記入を含みます。私はこれを1つなしでやりたいです。
したがって、どういうわけかjQueryに:user_idを渡して、それを正しいURIにリンクする必要があります。状態コントローラーと、ユーザー(そのうちの1人)に属する状態モデルがあります。ハートビートとオンラインは状態テーブルにあります。
rakeルートは次のことを示しています。PUT/states/:id(.: format)states#update
States_controller.rb
class StatesController < ApplicationController
before_filter :signed_in_user, only: [:thump]
before_filter :correct_user, only: [:thump]
def new
end
def update
@user = User.find(params[:id])
user.update_attributes(heartbeat: Time.now, online: true)
respond_to do |format|
format.js
end
end
end
application.js
jQuery.ajaxSetup({
'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
})
// Periodically updates heartbeat
$(function(){
setInterval (thump, 3000);
var js = '<thump> ';
function thump(){
console.log(js + 'Test');
$.ajax({
url: 'states/update',
type: 'POST',
success: function(result) {
console.log(js + result);
}
});
}
});
助けてくれてありがとう。