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