如何使用Ajax重新部分加载部分?

问题描述:

在后台,我希望它重新加载并显示出有多少条未读消息。
我希望没有刷新页面。我的意思是使用ajax。如何使用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 

像这样的东西应该工作轮询它:

控制器

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 
+0

感谢您的帮助。我现在该怎么办?我是否需要创建js或类似的东西?视图和控制器怎么样? – HUSTEN

+0

使你需要更新的信息的一部分,然后在你的控制器把这个渲染部分:'更新/信息' – RakuN

+0

感谢您的建议:)但控制器和视图? – HUSTEN

你应该有它返回你喜欢的一些未读邮件的一些动作,并使用JS功能setInterval()