Rails在循环中呈现部分

问题描述 投票:3回答:5

我是rails的新手,我试图在循环中渲染部分。

这里,books是一个渴望加载到控制器中的数组。

 books.each do |book|
   <%= render 'books/book', :book => book %>
 end

这很好用。但是当books数组非常庞大时,视图需要花费一些时间才能完全加载。有没有其他有效的方法可以实现相同的目标?我尝试了部分收集(like here),但即使这样也没有对书籍的加载时间产生太大影响。任何建议都将受到高度赞赏。谢谢。

ruby-on-rails ruby-on-rails-2 partials ruby-1.8
5个回答
3
投票

由于每次迭代打开/关闭部分文件,因此在循环中渲染部分会占用太多时间。而不是部分尝试使用您自己的帮助器为此目的。


1
投票

如果要在同一视图中显示值列表,则可以在同一视图中迭代值,而不是每次都渲染新的部分。如果不是这种情况,那么最好将值从控制器传递到您的视图。希望能帮助到你。


1
投票

如何在视图顶部使用“proc”,然后在循环中调用它。

<% book_proc = proc do |book| %>
  #your html call
  <% nil %><%# return nil to prevent print out in last string %>
<% end %>

<% books.each do |book| %>
  <%= book_proc.call(book) %>
<% end %>

0
投票

你写的是你是ruby / rails的新手,所以你有没有尝试过使用分页来解决你的性能问题?

分页会将您的列表拆分为例如20本书,并在桌子的底部放置一个分页符。


0
投票

我最近在一个项目中工作,我需要渲染一个大约1000行的表,我显然遇到了性能问题。

如果不能应用分页(由于要求)并且需要速度,那么助手就是解决方案(正如Dima Melnik已经回答的那样)。

为了证明我说的话,我给出了Ben Scofield制作的性能测试的链接:http://viget.com/extend/helpers-vs-partials-a-performance-question

© www.soinside.com 2019 - 2024. All rights reserved.