我有一个正在渲染的页面,根据查看它的人不同,它会略微有所不同。我的两个选择是1)使用一些
为了保持DRY,我不想只渲染两个完全不同的页面。相反,我更喜欢每个我渲染的页面都引用一些共同的部分。
例如:
选项1
view.slim
选项2
当前用户视图.slim
哪种方法更有效?
基准测试
这是我使用以下内容进行的一些基准测试:
_render.slim
以下是结果:
因此,似乎呈现部分非常缓慢。
想法?
Rails 4.1.5 ruby 2.1.2
编辑1:忘记在_if_clause.slim中添加| Hello行。
ifs
仅显示相关信息和2)从我的控制器中基于用户渲染两个不同的视图。为了保持DRY,我不想只渲染两个完全不同的页面。相反,我更喜欢每个我渲染的页面都引用一些共同的部分。
例如:
选项1
view.slim
h1 Notifications
- if current_user.student.id == params[:id]
= link_to 'Edit', ...
- @notifications.each do |note|
# some stuff
h1 Activity
- if current_user.student.id == params[:id]
= link_to 'Edit', ...
- @activities.each do |note|
# some stuff
#etc...
选项2
当前用户视图.slim
= render 'notifications_header
= link_to 'Edit', ...
= render 'notifications'
= render 'activities_header
= link_to 'Edit', ...
= render 'activities'
other_user_view.slim
= render 'notifications_header
= render 'notifications'
= render 'activities_header
= render 'activities'
_notifications.slim
- @notifications.each do |note|
# some stuff
哪种方法更有效?
基准测试
这是我使用以下内容进行的一些基准测试:
_render.slim
- 1000.times do
= render 'foo'
_foo.slim
| Hello
_if_clause.slim
- 1000.times do
- if current_user.student.id == params[:id]
| Hello
以下是结果:
![benchmarks](https://istack.dev59.com/6Y4Xo.webp)
想法?
Rails 4.1.5 ruby 2.1.2
编辑1:忘记在_if_clause.slim中添加| Hello行。
rack-mini-profiler
gem,因为我想要获取页面加载时间。 - XML Slayer