Rails部分有时花费太多时间来渲染



在我看来,我渲染的是局部。这实际上是一个在表中出现500 - 600次的行元素。我渴望载入所有的联想。但是,问题是,相同的部分有时需要突然不同的渲染时间。

我的rails服务器o/p:

Rendered admin/invoices/_update.html.erb (1330.3ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (4.8ms)
Rendered admin/invoices/_update.html.erb (8.8ms)
Rendered admin/invoices/_update.html.erb (4.4ms)
Rendered admin/invoices/_update.html.erb (1309.9ms)
Rendered admin/invoices/_update.html.erb (4.7ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (4.6ms)
Rendered admin/invoices/_update.html.erb (1322.6ms)
Rendered admin/invoices/_update.html.erb (4.2ms)

同样,也没有特定的行每次花费的时间更长。

在我的视图文件中:

<% @updates.each do |update| %>
<%= render :partial => 'update', :locals => {:user => update[0]} #each of this is  a row %>
<% end %>

更新:也建议如果这是一个好的方式来做到这一点?例如:在一个部分上循环这么多次。我不能使用分页和Ajax来固定东西。还有其他方法吗?

局部在呈现集合时非常有用。当您通过:collection选项将一个集合传递给分部时,分部将为集合中的每个成员插入一次:

<%= render :partial => 'update', :collection => @updates %>

也有一个简写。假设@updates是更新实例的集合,您可以简单地在index.html.erb中这样写,以产生相同的结果:

<%= render @updates %>

Rails指南的3.4.5节详细解释了这一点。

虽然我不确定为什么延迟在渲染中出现峰值,但我强烈建议颠倒顺序:您将所有更新提供给部分,并在其中迭代并呈现行。

视图文件

    <%= render :partial => 'update', :locals => {:updates => @updates} %>

在update部分

    <% updates.each do |update| %>
       RENDER LOGIC
    <% end %>

这就是为什么您不会在更新中为每一行承受部分加载开销的原因。希望这对你有帮助!

相关内容

  • 没有找到相关文章

最新更新