2015-10-14 52 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这里来避免页面刷新 - 他们已经拥有的数据,为什么刷新?