2012-04-12 8 views
0

は、だから、私はapplication.html.erbファイルでこれを持っている:Railsのページで現在のメニュー廊をハイライト

<div class="mainMenu"> 
<%= link_to 'Movies', dvds_path %> 
<%= link_to 'Books', books_path %> 
<%= link_to 'Albums', cds_path %> 
<%= link_to 'Games', games_path %> 
</div> 

は、私たちはそれぞれの上にある場合は、メニューの「ハイライト」のクラスを入れたいです我々はdvds_pathにある場合ページは、そう例えば、映画のページでは、それは次のようになります。

<%= link_to 'Movies', dvds_path, :class => 'highlight' %> 

しかし、それを把握することができないよう、これらの方法のどれも私のために働いていない:

using the controller

using a helper

すべてのヘルプはあなたが使用することができ

答えて

1

をいただければ幸いです。

link_to_unless_current(name, options = {}, html_options = {}, &block) 

は、現在の要求がない限りオプションのセットで作成されたURLを使用して、指定された名前のリンクタグを作成します。 URIはリンクと同じですが、その場合は名前だけが返されます(または指定されたブロックが存在する場合はそのブロックが返されます)。 link_to_unless_currentに、デフォルトの動作を特化したブロックを与えることができます(リンクのテキストではなく、「ここから開始」リンクを表示するなど)。

http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to_unless_current

だから、あなたはあなたの「リンク」あなたのナビゲーションバーのような非選択のスタイルを設定すると、リンクが存在しない場合「選択」スタイルを持つことができます。..

li { color:#fff; } /* selected */ 
li a { color:#333; } 
li a:hover { color:#999; } 

<ul id="navbar"> 
    <li>Home</li> 
    <li><a href="/controller/about">About Us</a></li> 
</ul> 
+0

これは素晴らしいですが、 (現在の)リンクに画像が表示されます。なぜなら、ハイライト表示されているクラスをリンクする必要がないからです。私はリンクであるものの背景画像をnoneに設定しようとしましたが、うまくいきませんでした。現在のページ(リンクではなくなったページ)にクラスを付けることができますか?もしそうなら、どうすればいいのですか? – kakubei

+0

以下の回答を参照してください。 – RGB

0

ことかなり確信してイムこれをdoブロックに入れると、リンクが現在の場合に代替コンテンツ値を割り当てることができます。

link_to_unless_currentに与えられた暗黙ブロックは、現在のアクションが与えられたアクションであるかどうか評価されます。コメントページへのリンクではなく、コメントページへのリンクではなく「戻る」リンクを表示したい場合は、次のようなことができます。

<%= 
    link_to_unless_current("Comment", { :controller => "comments", :action => "new" }) do 
    image_tag src=>"/image.jpg" 
    end 
%> 
+0

はい、送信したリンクの例から分かりました。ありがとうございました。 – kakubei

関連する問題