gpt4 book ai didi

javascript - 在没有表单的情况下使用 jQuery 和 Rails 定期 ping 服务器,更新表

转载 作者:行者123 更新时间:2023-11-30 06:38:09 24 4
gpt4 key购买 nike

我有点菜鸟,所以请多多包涵!

我正在尝试——当用户在仪表板上登录时——让 jQuery 每隔 X 秒定期对服务器执行 ping 操作,并使用当前日期时间更新用户的“心跳”,并将“在线”设置为 true。

我可能遗漏了一些 RESTful 概念和涉及 jQuery 和 Rails 之间通信的概念。刚刚完成 Michael Hartl 的 Ruby on Rails 教程并正在构建他的示例应用程序。

我做过研究,但答案主要涉及填写表格;我想在没有人的情况下做到这一点。

所以我需要以某种方式将 :user_id 传递给 jQuery 并将其链接到正确的 URI。我有一个状态 Controller 和一个属于用户(拥有其中一个)的状态模型。 Heartbeat 和 Online 在 states 表中。

rake routes 显示: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);
}
});
}
});

感谢您的帮助。

最佳答案

如果您尝试执行的用户与当前登录的用户相同,那么您似乎不需要传递任何东西,只需在您的 Controller 中使用 current_user (或其他),而不是传递一个 id 并再次重新获取相同的对象。

关于javascript - 在没有表单的情况下使用 jQuery 和 Rails 定期 ping 服务器,更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13283738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com