【发布时间】:2014-12-16 15:51:11
【问题描述】:
我需要我的 Rails 应用程序来生成巨大的表(大约 5-7 列,大约 2000-3000 行),它是供公司内部使用的,所以我们不关心流量等等。
正在显示的对象的结构应该是相当灵活的:当某些列被添加/更改/删除时,它只在一个地方被更改(除了修改数据库架构),所有的视图(索引、显示、编辑表单) 自动更新。
我之前完全没有使用 Rails 的经验。我将部分作为重用代码的一种方式(这是一件好事),因此,我没有看到使用嵌套的子子子部分没有什么不好的。比如说,我有几个模型,index 每个模型的视图 renders 通用部分 gen_index,对于表格的每个单元格都有特殊的部分 gen_field_view。
同样的部分gen_field_view 是从show 视图中渲染出来的,所以,我真的很想把它作为一个部分。
如果我只有 600 行和 5 列,这个部分会被渲染 3000 次。这对我来说是一个巨大的惊喜,因为 Rails 如此困难:目前生成页面大约需要 7 秒。如果我删除 gen_field_view 部分并将其直接包含到 gen_index 部分中,大约需要 3 秒:快两倍多(无论如何这很慢,但这是不同的故事)。
在这种情况下,我们似乎应该避免嵌套部分,但是,我们还应该使用什么来重用视图代码?
我们或许可以从模型中的某个方法返回 html 代码,但它实际上扼杀了 Rails 的想法,而且毕竟不方便。
【问题讨论】:
-
如果你在开发中运行,那么检查生产中的速度有多快 - 在开发中,rails 会更多地检查磁盘上的部分是否发生了变化
-
@FrederickCheung 你是对的,在生产中它的工作速度大约快 2-3 倍。但即便如此,如果我删除部分并直接包含它,差异大约是 2 倍。我对 Rails 中的局部执行缓慢感到非常失望。
标签: ruby-on-rails