所以我想找到刷新頁面的更好方法。我有一個應用程序,它使用您在系統上捕獲的數據構建Excel電子表格。所以我所做的只是每10秒鐘重新加載一次頁面直到完成,這樣通知才能正常顯示。Rails重新加載頁面之前的Ajax查詢數據
像這樣的東西(它在HAML語法)
.pending_downloads
- if downloads_policy.pending?
.notification_notice
= image_tag 'spinner.gif'
Your data download is being prepared. This should only take a few minutes. It is safe to leave this page and return later.
= link_to "Cancel download.", download_path(downloads_policy.pending), :method => :delete, :class => "delete_link"
= javascript_tag("ToolkitApplication.periodical_reload();")
阿賈克斯(它在CoffeeScript中)爲periodical_reload();
方法是這樣的:
class @ToolkitApplication
this.periodical_reload =() ->
setInterval (->
window.location.reload()
), 10000
這種做法我覺得可以做更好。我想讓ajax每3秒查詢一次模型,以查看對象狀態何時發生變化,然後一旦發生變化,就會重新加載窗口。所以,在下載準備就緒之前,你不會像下載10次那樣重新加載頁面,每次我嘗試研究時,如果這是可能的,我會得到這個rubyonrails guide,這對於這種邊緣情況來說確實非常有見地。這是可能的,如果有的話,是否有任何好的教程/博客文章/建議如何做到這一點?谷歌沒有屈服。
定期重新加載是你甚至不應該想到在任何應用程序中使用的東西。它混淆了用戶和呈現應用程序不專業(至少恕我直言)。你應該'setInterval'來檢查服務器是否準備好數據。如果準備就緒並且用戶處於同一頁面,則只需更新顯示結果的視圖塊即可。或者在成功完成任務後,顯示彈出式或類似Linux的警報,通知用戶該任務已完成。另外,當時不要忘記'clearInterval'。在警報中,提供一個鏈接讓用戶參與。 –
是啊,這是我正在看做頁面將不得不刷新,因爲有表將刷新以及。但我100%同意。捕捉我的部分使用ajax來查詢服務器數據。我正在使用respond_to | format |然後format.js嘗試捕獲它,但這是令人困惑的 – TheLegend