2012-03-08 13 views
1

私のアプリケーションは、ページの最初の「表示」アクションでは時間がかかります。 app/views/layouts/application.html.erbに最初の2番目から表示したいレイアウトがあります。情報メッセージとともにスピナーがこのレイアウト内にあり、操作が完了するまでに時間がかかることをユーザーに伝えます。この操作が終了したら、このメッセージを実際のコンテンツで置き換えてください。可能であればAJAXでこれを変更してください。ただし、当面はページを更新するだけでよいです。Ruby on Railsのプリロードレイアウト

これは私のショーアクションでは、高価なプロセスは「load_suggestions」(約5秒)です。 Show loading screen while performing task in Rails 3 - - 私が達成しようとする何のためにいくつかのかなり興味深い情報を持っている

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

私はこのポストがあると信じています。基本的には、このjavascript関数をviews/issues/show.js.erbに含めます。問題は、私がそこにそれを含めると、毎回呼び出されることになるということです。それは私がやるべきことではありません。

提案、手がかり、指導?

答えて

0

あなたは新しいrails streaming apiを試して、残りのものが読み込まれる前にいくつかの待機中のJavaScriptコードを表示することができます。

あなたのアプローチは良い考えではありません。代わりに、私はバックグラウンドで遅いものを入れて、それが終了した後にそれを取得するためにajaxを使用しようとします。

別のアプローチでは、アプリケーションを起動する前に読み込みを行う「ウォームアップ」があります。例えばイニシャライザで実行される。

+0

私はRails 3を使用していますが、それをストリーミングする方法はありますか?それはかなり素晴らしいと聞こえます – eLobato

+0

Rails 3.what?それはレール3.1で導入されたhttp://guides.rubyonrails.org/3_1_release_notes.html – phoet

+0

3.0残念なことに – eLobato