2012-03-08 88 views
1

我的應用程序必須在頁面的第一個「顯示」操作上執行相當耗時的操作。 我在第一秒鐘想要展示的app/views/layouts/application.html.erb中有一定的佈局,這樣一個微調消息就會出現在這個佈局中,讓用戶知道操作需要一些時間才能完成。此操作完成後,我想用真實內容替代此消息,如果可能,請通過AJAX更改此消息,但我不介意暫時刷新頁面。使用Ruby on Rails預加載佈局

我在我的節目中有這個動作,昂貴的過程是'load_suggestions'(約5秒)。

respond_to do |format| 
     format.html do 
     if @issue.suggestions == [] 
      load_suggestions 
     end 
     end 
     format.xml { render :xml => @issue } 
     format.js 
     end 

我相信這個帖子 - Show loading screen while performing task in Rails 3 - 有一些我想要完成的有趣的信息。基本上我會在views/issues/show.js.erb中包含這個javascript函數。問題是,如果我把它包括在內,每一次都會被調用,而這不是我打算做的。

任何建議,線索,指導?

回答

0

您可以嘗試新的rails streaming api並在您的其他東西加載之前呈現一些等待的JavaScript代碼。

我不會認爲你的方法是一個好主意。相反,我會嘗試將緩慢的東西放在後臺,並在完成後使用ajax進行檢索。

另一種方法是在啓動應用程序之前加載這些東西,然後進行一些「熱身」。例如在初始化器中。

+0

我正在使用Rails 3,任何可能的方式來做流?這聽起來很棒 – eLobato 2012-03-08 20:18:15

+0

Rails 3.什麼?它與軌道3.1引入http://guides.rubyonrails.org/3_1_release_notes.html – phoet 2012-03-09 07:02:17

+0

3.0不幸的是 – eLobato 2012-03-09 19:52:28