我是rails的新手,我试图在循环中渲染部分。
这里,books是一个渴望加载到控制器中的数组。
books.each do |book|
<%= render 'books/book', :book => book %>
end
这很好用。但是当books数组非常庞大时,视图需要花费一些时间才能完全加载。有没有其他有效的方法可以实现相同的目标?我尝试了部分收集(like here),但即使这样也没有对书籍的加载时间产生太大影响。任何建议都将受到高度赞赏。谢谢。
由于每次迭代打开/关闭部分文件,因此在循环中渲染部分会占用太多时间。而不是部分尝试使用您自己的帮助器为此目的。
如果要在同一视图中显示值列表,则可以在同一视图中迭代值,而不是每次都渲染新的部分。如果不是这种情况,那么最好将值从控制器传递到您的视图。希望能帮助到你。
如何在视图顶部使用“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 %>
你写的是你是ruby / rails的新手,所以你有没有尝试过使用分页来解决你的性能问题?
分页会将您的列表拆分为例如20本书,并在桌子的底部放置一个分页符。
我最近在一个项目中工作,我需要渲染一个大约1000行的表,我显然遇到了性能问题。
如果不能应用分页(由于要求)并且需要速度,那么助手就是解决方案(正如Dima Melnik已经回答的那样)。
为了证明我说的话,我给出了Ben Scofield制作的性能测试的链接:http://viget.com/extend/helpers-vs-partials-a-performance-question