2

基本的な current_page メソッドを使用して、ナビゲーション リンクを現在のページとして強調表示するかどうかを定義しようとしています。

現時点ではエラーは発生していませんが、CSS が正しく使用されていないため、適切に定義されていません。

私の PagesController には、次のものがあります。

def current_page
  current_page = (path)
end

そして、ページビューでifステートメントとelseステートメントを使用して、次のように使用するCSS行を定義しようとしています:

<div id="nav">
  <ul>
    <li>
      <% if "current_page" %>
        <a href="/about" class="about-cp">About</a>
      <% else %>
        <a href="/about" class="about">About</a>
      <% end %>
    </li>
  </ul> 
</div>

これについてかなりの数のフォーラムを読みましたが、まだ正しく理解できないようです。

4

3 に答える 3

3

コードでエラーが発生しました。With if "current_page"you は常に true になり、最初のリンクのみがレンダリングされます。if current_page代わりに使用する必要があります。

しかし、Rails には組み込みのヘルパーがあり、current_page?まさにこの目的のために呼び出されます。

次のようにしてください:

 <% if current_page?(path) %>
   <a href="/about" class="about-cp">About</a>
 <% else %>
   <a href="/about" class="about">About</a>
 <% end %>

の詳細については、こちらを参照してくださいcurrent_page?

于 2012-04-21T18:27:13.757 に答える
2

クランプの答えはあなたの要件に従いますが、あえて別のアプローチを提案します。

 <div id="nav">
  <ul>
   <li>
     <%= link_to_unless_current 'About', about_path %>
   </li>
  </ul> 
 </div>

このようにAboutして、現在のページがテキストとして表示され、about_path他のページではリンクとして表示されます。

于 2012-04-21T18:52:49.420 に答える
0
<a href="/about" class="<%= "active" if current_page?(path) %>">About</a>
于 2012-04-21T19:29:25.090 に答える