2012-03-25 18 views
4

私は、RailsアプリケーションでTwitter Bootstrapを使用するための基本的なレールキャストに従っていました。私は英雄にプッシュしなければならないまで、すべてが素晴らしかったし、pgの宝石にいくつかの問題がありました。私は資産を掘り起こさなければなりませんでした。最後に私は解決しました。Twitter Bootstrap Pills with Rails 3.2.2

今、私は自分のアプリケーションに薬を使用しようとしている、私は、私は、ドキュメントからのコピー/貼り付けを持っていると私はリンクの1プッシュするとのhref :)

<div class="container"> 
    <div class="row"> 

    <div class="span3"> 
     <p> Lorem Ipsum</p> 
    </div> 

    <div class="span9">  
     <ul class="nav nav-pills"> 
     <li class="active"><a href="/">Home</a></li> 
     <li><a href="/products">Products</a></li> 
     <li><a href="/categories">Categories</a></li> 
     </ul> 
    </div> 

    </div> 
</div> 

にURLを変更しました右のURLにリダイレクトされましたが、選択されたオプションはclass = "active"に変更されません。なぜか...私はそれがjavascriptだと思ったが、ホバリングプロパティは正常に機能すると思った。つまり、マウスがオプション(アクティブとは異なる)を超えたとき、そのスタイルが変わった。

私は熊手資産を試してみました:きれいな、しかし何の変化が

おかげ

+0

[Twitter-Bootstrapナビゲーションでアクティブなリンクを表示する方法は?](http:// stackoverflo w.com/questions/9879169/how-to-get-twitter-bootstrap-navigation-to-show-active-link) –

答えて

20

を行っていないあなたは、実際に自分でこれを処理する必要があります!

あなたのリストは、あなたがタブがアクティブ一つで、各リクエストで指定する必要が

<li class="<%= 'active' if params[:controller] == 'yourdefaultcontroller' %>"><a href="/">Home</a></li> 
    <li class="<%= 'active' if params[:controller] == 'products' %>"><a href="/products">Products</a></li> 
    <li class="<%= 'active' if params[:controller] == 'categories' %>"><a href="/categories">Categories</a></li> 

ようになるはずです。これを行うには、paramsハッシュで渡されるコントローラーの名前(必要な場合はアクション)を使用します。

+0

素晴らしい、完璧に働いた。 – Daniel

+1

@ user1088357彼の名前の横にあるチェックマークをクリックすると、彼の答えを受け入れることができます。これも私のために働いた。 Pierreにも私がこれについて作成した質問に感謝します。 – LearningRoR

+4

私はこのアイデアはここで正しいと思うが、直接paramsハッシュに行くのは悪い考えのように思える。同様に、同じコードを何度も何度も繰り返しています。私は少なくともcurrent_pageを使用することをお勧めしますか?メソッドを使用して現在のコントローラ/アクションをチェックし、コードをヘルパーに移動してコードの繰り返しを回避します。 –

17

あなたはこのようなものを使用することができます。

<li class="<%= 'active' if current_page?(root_path) %>"><%= link_to "Home", root_path %></li> 
<li class="<%= 'active' if current_page?(about_path) %>"><%= link_to "About", about_path %></li> 
<li class="<%= 'active' if current_page?(contact_path) %>"><%= link_to "Contact", contact_path %></li> 
5

私はRailsのフォームヘルパーのスタイルでこれを実装するためにヘルパーを使用しました。ヘルパーで

(例えばapp/helpers/ApplicationHelper.rb):

def nav_bar 
    content_tag(:ul, class: "nav navbar-nav") do 
    yield 
    end 
end 

def nav_link(text, path) 
    options = current_page?(path) ? { class: "active" } : {} 
    content_tag(:li, options) do 
    link_to text, path 
    end 
end 

次に、ビュー(例えばapp/views/layouts/application.html.erb)中:

<%= nav_bar do %> 
    <%= nav_link 'Home', root_path %> 
    <%= nav_link 'Posts', posts_path %> 
    <%= nav_link 'Users', users_path %> 
<% end %> 

この例では、生成し( 'ユーザー' ページで):