在后台,我希望它重新加载并显示有多少未读消息的数量 我希望没有刷新页面。我的意思是使用ajax。
如果我在菜单中有这个,我怎么能每30秒刷新一次这个部分?
<li><%= link_to sanitize('<i class="icon-envelope"></i> ') + "received messages" + sanitize(' <span class="badge badge-info">'+current_user.mailbox.inbox(:read => false).count(:id, :distinct => true).to_s+'</span>'), messages_received_path %></li>
messages_controller.rb
def received
if params[:search]
@messages = current_user.mailbox.inbox.search_messages(@search).page(params[:page]).per(10)
else
@messages = current_user.mailbox.inbox.page(params[:page]).per(10)
end
add_crumb 'Messages Received', messages_received_path
@box = 'inbox'
render :index
end
答案 0 :(得分:1)
您应该有一个操作,它会返回一些类似于未读消息的内容,并使用JS函数setInterval()
答案 1 :(得分:1)
这样的事情应该有效:
<强>控制器强>
def messages_received
@messages = Messages.messages_received
respond_to |format|
format.json { render json: @messages }
end
end
<强> JS 强>
setInterval(function(){
$.ajax({
type: 'GET',
url: '/messages_received',
data: {},
success: function(JSONRESPONSE){
alert(JSONRESPONSE) // @messages variable
};
})
},30000) // 30 segs