2012-05-30 51 views
1

我很好奇Rails current_page?幫助器方法的效率。我使用它在一個視圖中,大致如下圖所示: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 %>

而且是有在軌道2和Rails 3之間的效率的任何差異?

回答

1

我不能梁2和Rails 3之間的差異說話,但看source code in ActionPack,它看起來並不像該方法做什麼特別複雜。 url_for可能效率稍低(我不知道如何),但是除非你在這部分中做了大量循環,否則優化這可能不會爲你節省大量的時間。

這就是說,它會很容易地做一些基本的基準 - T = Time.now;在一個版本上循環1000次; v1_time = t - Time.now; t = Time.now;沖洗並重復使用其他版本。如果你這樣做,讓我知道你找到了什麼。

所有這一切說,在我看來,這將是可能是清潔概念上有你的控制器方法設置相應的標誌,如果標誌可以表示爲不直接相關的視圖的概念。我會好奇別人的想法。