2014-08-27 85 views
0

我正在研究一個連接到filemaker的內部應用程序,並返回一堆結果。這是一個非常大的文件製作器數據庫,因此加載所有結果需要大約10秒鐘的時間。使用Ruby on Rails預加載建議

而不是標準的瀏覽器加載頁面,我最好喜歡顯示某種類型的加載動畫。我不需要百分比或任何關於加載腳本的反饋。

我想最好的方式來處理這將是加載一個頁面,並使用AJAX來獲取數據;然而,我不太確定如何在我的routes.rb文件中構造這個。

...或者如果有更好的方法來做到這一點。

我以前每次必須使用外部數據饋送或靜態HTML文件,因此我只是在尋找任何可能的建議/最佳實踐。

感謝您的閱讀!

PS-使用Ruby on Rails 4

+0

這不是可擴展的嘗試「加載所有的結果」,除非那些僅限於只是適合那些在頁面上。指定要返回的特定偏移量和結果數量通常很容易,因此可以輕鬆遍歷頁面大小的塊。 – 2014-08-27 23:18:33

回答

1

這是我怎麼會在你的js.coffee文件結構這樣的任務

get '/your_route', to: 'controller#your_action', as: :named_route 

在控制器

def your_action 
    respond_to do |format| 
    format.html # this line will just load the page 
    format.json {render json: your_data_load.to_json} #this line will actually supply your data when you request a json response 
    end 
end 

$ -> 
    #start your loading image 
    $.getJSON '/your_route.json', (data) -> 
    #populate the page with your data 
    #remove your loading image 

什麼這是當頁面被加載時,它會呈現HTML頁面,因爲respond_to塊,然後當頁面加載時,它會啓動您的加載圖像。然後,它會向相同的路線發出請求,但是會發出json請求,該請求實際上也會通​​過respond_to塊提供您的信息。這個json對象將包含在jQuery中的數據變量中,您可以根據需要處理它,然後在完成後刪除加載圖像。

如果您提供了更多信息,我的答案可能會更不明確,但這是我將用於處理您的請求的樣式。

+0

這比我想象的要簡單得多,但確實如此 – 2014-09-02 14:17:26

0

對於試圖在屏幕上顯示的數據庫加載,10秒鐘是很長時間。您的數據庫查詢有沒有可能比您想象的要低效?如果您是Rails的新手,可以考慮在瀏覽頁面時查看控制檯日誌,以確切瞭解您打到數據庫的次數。一個常見的錯誤是用許多小型SQL查詢加載數據,而不是一個大型連接,它可以完全滿足您的需求。

如果您正在使用ActiveRecord連接到你的數據庫,查找預先加載,這可以幫助:http://guides.rubyonrails.org/active_record_querying.html#eager-loading-associations