2015-10-14 50 views
0

我正在開發一個項目(URL:example),並且我有一個表格可以在表格的多行(20)中加載許多選項(多於6000)。如何在sinatra中使用AJAX加載更快的頁面

表是這樣的:

User role permission  machine 

在機器列有這樣的形式:

<form action="/example" method="get"> 
<select> 
    <% session[:var].map(&:to_i).sort.each do |var| %> 
    <option><%= var.to_s.force_encoding('UTF-8') %></option> 
    <%end%> 
</select> 
</form> 

問題是訪問URL時,它需要太多加載所有由於加載所有機器的變量var,機器列中的數據。 (這個電話的大小爲3.2 Mb)。

當用戶選擇一個選項時,頁面再次加載。但在這一點上,我可以使用AJAX來避免這種刷新,當用戶選擇一個選項。

我的問題是:

是否有可能也與AJAX以做出更加快速鍵入URL(例如),或有任何形式加快這一加載過程只是當頁面。

回答

0

我預填第一可見頁面的結果(比如,25個結果),然後要麼分頁的結果,從而允許刷新但削減數據對於每個響應,使用AJAX在滾動/推送更新按鈕時更新結果。大多數數據庫ORM庫都有一個可以使用的分頁插件。

雖然這裏沒有什麼需要 AJAX。請記住,AJAX只是對站點API進行調用,沒有什麼特別之處,它仍然只是一堆HTTP請求響應。 AJAX讓您有機會將部分處理推向客戶端,這是主要的。

請考慮將您的路由/應用拆分爲提供頁面和僅提供數據的頁面。您甚至可以合併提供呈現和數據的路線,例如using the request.xhr? object method,例如

erb :index, :layout => !request.xhr? 

if request.xhr? 
    json {my: data, goes: here} 
else 
    erb :index, :locals => {my: data, goes: here} 
end 

當用戶選擇一個選項,然後在頁面加載再次

你肯定可以使用AJAX這裏來避免頁面刷新 - 他們已經擁有的數據,爲什麼刷新?