2012-02-29 6 views
0

ユーザーが現在いるページに基づいてliのクラスをアクティブに設定しようとしています。ナビゲーションでアクティブなliを指定するためのRefactorシンプルなレールコード

私は4つのナビゲーション要素を持っており、それらはすべて、このような何かを見て:

<% if @activeLi == "home" %>   
    <li class="active"> 
<% else %> 
    <li> 
<% end %> 
    <%= link_to :controller => "home" do %> 
     <span>Home</span> 
    <% end %> 
</li> 

をして、私はちょうどこのよう@activeLi設定し、各コントローラに:

def index 
    @activeLi = "about" 
end 

私はこれはかなり基本的なものを知っていますものが、私はちょうどこれを行う簡単な方法があるのだろうか?

答えて

2

まあ、私はあなたがこれらの厄介なインスタンス変数を使用する必要性を取り除くことで、これを簡略化することができます。

<li class="<%= controller_name == "home" ? 'active': '' %>"> 
    <%= link_to :controller => "home" do %> 
     <span>Home</span> 
    <% end %> 
</li> 
+0

初心者の私はRoRに就いているので、私はcontroller_name機能を認識していませんでした。ありがとうございました。 – Catfish

+1

実際には数百もあります。私は数ヶ月前に自分自身のcontroller_nameについて学んだだけです。私は本当に(Pry Gem)[http://pry.github.com/]をダウンロードして開発プロセスに取り組むことをお勧めします。スクリプトの実行やWebページのレンダリングを一時停止し、使用可能なすべての変数とメソッドが有効であることを確認することは、実際の人生の節約になりました。 –

+0

+1のために!.... –

関連する問題