如何使用Sinatra中的部分视图加快页面加载速度

时间:2015-10-19 08:35:15

标签: jquery sinatra

有些日子我真的陷入困境,找不到解决这个问题的方法:加载页面时需要花费很多时间加载,因为有些部分正在加载select option数千个条目。

我想在调用页面时停止加载它,并在用户点击+符号时允许选择选项。

代码:

<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>
 <input type="submit" value="+" />
</form>

如何避免最初加载<select>部分?还是有更好的主意?

1 个答案:

答案 0 :(得分:0)

好吧,经过几天的挣扎,我找到了一个使用partials的解决方案。

页面加载时的第一个部分仅为+,表示未加载select option。仅当用户通过单击需要它时。

<div class="delegate">
  <%= erb_partial :partial_empty %>
</div>

在此partial_empty中是这样的:

<span class="empty">+</span>

使用jquery我创建了一些这样的代码:

$(document).ready(function(){
  $(".empty").click(function(){   
    $('#partial_with_select_options).load(encodeURI("URL to controller"));             
  });  
});

我正在向控制器发送一些变量,以便能够填写我的select option

因此,通过这种方式,我避免为表格中的每一行加载整个select options,从而加快或加快页面的加载过程。