1

我很好奇 Railscurrent_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例如,在我的控制器操作中为and设置一个实例变量bar,然后检查是否更有效<% if @foo || @bar %>

Rails 2 和 Rails 3 之间的效率有什么区别吗?

4

1 回答 1

1

我无法说出 Rails 2 和 Rails 3 之间的区别,但是查看ActionPack 中的源代码,看起来该方法并没有做任何特别复杂的事情。url_for 可能效率稍低(我不知道),但除非您在此部分上进行大量循环,否则优化它可能不会为您节省大量时间。

也就是说,做一些基本的基准测试很容易——t = Time.now; 在一个版本上循环 1000 次;v1_time = t - Time.now;t =时间.现在;冲洗并重复另一个版本。如果你这样做,请告诉我你发现了什么。

综上所述,在我看来,如果可以将标志表示为与视图不直接相关的概念,那么让您的控制器方法设置适当的标志在概念上可能会更清晰。我很好奇别人怎么想的。

于 2012-05-30T14:30:03.380 回答