current_page效率如何?辅助方法?

时间:2012-05-30 14:01:09

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-2

我很好奇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 %>

但是以其他方式进行此切换会更有效吗?例如,在foobar的控制器操作中设置实例变量会更有效,然后检查<% if @foo || @bar %>

Rails 2和Rails 3之间的效率是否存在差异?

1 个答案:

答案 0 :(得分:1)

我不能说Rails 2和Rails 3之间的区别,但是看source code in ActionPack,看起来这个方法看起来并不是特别复杂。 url_for可能效率稍低(我不知道随便),但除非你在这个部分上做了大量的循环,否则优化它可能不会为你节省大量的时间。

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

所有这一切,在我看来,如果标志可以表示为与视图不直接相关的概念,那么在概念上可能会让控制器方法设置适当的标志。我很好奇其他人的想法。