我是一個小菜鳥,所以請耐心等待!使用jQuery和Rails定期ping服務器而不使用表格,更新表格
我想 - 當用戶在儀表板上登錄時 - 讓jQuery定期每隔X秒鐘ping服務器,並用當前日期時間更新用戶的'心跳'並將'online'設置爲true。
我可能會錯過一些涉及jQuery和Rails之間通信的RESTful概念和概念。剛剛完成了Michael Hartl的Ruby on Rails教程,並構建了他的示例應用程序。
我已經做了研究,但答案主要涉及填寫表格;我想這樣做沒有一個。
所以我需要以某種方式傳入jQuery a:user_id並將其鏈接到正確的URI。我有一個狀態控制器和一個屬於用戶的狀態模型(has_one)。 Heartbeat和Online在狀態表中。
耙路線表明:PUT /states/:id(.:format)指出#更新
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);
}
});
}
});
感謝您的幫助。
這是真的...現在試試這個。 –
對,我是KISS原則的忠實粉絲......祝你好運。 –
另外,使用current_user使其更加防篡改。我不確定在這個特定的應用程序中它是否很重要,但是在將來類似的問題需要記住。 –