我很好奇Rails current_page?
辅助方法的效率。我在视图中使用它,大致如下所示:
<% if current_page?(:action => "foo") %>
<dt>Label 1:</dt>
<% else %>
<dt>Label 2:</dt>
<% end %>
和
<% if current_page?(:action => "foo") || current_page(:action => "bar") %>
<dt>Label 1:</dt>
<% else %>
<dt>Label 2:</dt>
<% end %>
但是以其他方式进行此切换会更有效吗?例如,在foo
和bar
的控制器操作中设置实例变量会更有效,然后检查<% if @foo || @bar %>
?
Rails 2和Rails 3之间的效率是否存在差异?
答案 0 :(得分:1)
我不能说Rails 2和Rails 3之间的区别,但是看source code in ActionPack,看起来这个方法看起来并不是特别复杂。 url_for可能效率稍低(我不知道随便),但除非你在这个部分上做了大量的循环,否则优化它可能不会为你节省大量的时间。
也就是说,做一些基本的基准很容易 - t = Time.now;在一个版本上循环1000次; v1_time = t - Time.now; t = Time.now;用其他版本冲洗并重复。如果你这样做,请告诉我你的发现。
所有这一切,在我看来,如果标志可以表示为与视图不直接相关的概念,那么在概念上可能会让控制器方法设置适当的标志。我很好奇其他人的想法。