2012-08-03 87 views
2

我在我的應用程序控制器中有一個幫助器方法,用於檢查何時創建了一個對象。基本上,如果對象的總數發生變化,它會在頁面加載時通過flash消息提醒您。此代碼工作正常,但我想要做的是消除重新加載的需要。如何在不刷新頁面的情況下觸發並顯示Flash消息?

這將如何完成?我知道解決方案可能會涉及AJAX,但我是AJAX和rails的新手,所以我不知道如何去做這件事。謝謝您的幫助!

+0

當您希望顯示此消息時,不完全清楚。你想讓它顯示*你*,例如,當我*創建一個新的對象時?這需要輪詢(通過ajax)或某種推送通知。 – x1a4 2012-08-03 20:46:42

+0

我希望它在創建對象時顯示一條Flash消息。基本上,我有代碼檢查對象的數量是否發生了變化,如果是,則顯示一條閃光消息。我想每隔10秒左右運行一次該代碼,並在對象數量發生變化時顯示一條閃爍消息。 – 2012-08-03 20:55:05

+0

聽起來像是你想要一個ajax輪詢器,它比推送通知更容易集成到現有系統中。你使用的是什麼版本的導軌? – x1a4 2012-08-03 22:06:24

回答

2
<script type="text/javascript"> 
    var i = setInterval("checkObjectCount()", 10000); 

    function checkObjectCount() { 
    count = <%= @object_count %>; 

    $.ajax({ 
     url: 'ajax/request_object_count', 
     success: function(data) { 
     if (data > count) { 
      $('#alert_container').show(); 
      clearInterval(i); 
     } 
     } 
    }); 
    } 
</script> 
+0

你能解釋一下嗎?如果我理解腳本,它每10秒使用ajax輪詢一次url? – 2012-08-04 17:12:44

+1

是的,它每10秒調用一次該函數。在你的Rails路由中,你將創建一個「ajax/request_object_count」的路由,並且這個頁面將呈現對象計數。在ajax調用中,在URL被_success_fully請求之後,值將被比較。如果爲true,則會顯示警報容器,並且setInterval函數將被清除(停止)。否則,循環繼續。 – 2012-08-04 17:57:28

+0

好吧,非常感謝!我想我可以做這個工作 – 2012-08-06 13:24:42

相關問題