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

How to make faster the page loading using partial views in Sinatra

几天以来我真的被困住了,无法找到解决这个问题的方法:加载页面时需要很长时间才能加载,因为有些部分正在加载 select option 包含数千个条目。

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

代码:

<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> 部分?或者有什么更好的主意吗?

好吧,经过几天的努力,我找到了使用 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

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