【发布时间】:2010-01-02 15:07:23
【问题描述】:
我试图创建一个通知用户任何新私人消息的系统,消息控制器的 index 方法创建到 @messages 和 @newmessages 的实例变量,两者都在 index.html.erb 中使用,我想使 index.js.erb 使我网站上的 flash 消息框出现。
我让 jquery 每隔几秒运行一个函数,运行的函数是
function checkagain(){
//Start a Timer, dont want it bombarding the server with constant requests
$.timer(10000,function(){
$.getScript("/messages.js");
//RECURSE, see you again in 10 seconds
checkagain();
});
}
$.getScript 似乎并没有让它运行 index.js.erb 上的代码,这很简单:
alert("RESPONDING");
我似乎无法让它触发该页面上的代码。
我发现 /messages.js 不返回任何 javascript,和 index.html.erb 一样
控制器的索引动作是:
def index
@messages = Message.find(:all, :conditions => "receiver_id = '#{current_user.id}' AND `read` = '1'")
@newmessages = Message.find(:all, :conditions => "receiver_id = '#{current_user.id}' AND `read` = '0'")
end
【问题讨论】:
-
离题,但你在那里做的不是递归。该评论具有误导性。
-
它在该函数的新版本中本质上是相同的,但将更高的延迟传递给下一个函数调用,然后在延迟超过 10 分钟时停止
-
重点是checkagain和匿名函数都没有同时入栈两次;因此,没有递归。
标签: jquery ruby-on-rails