2

現在のページに応じてナビゲーション バーに別のリンクを表示したい Rails 4 プロジェクトに取り組んでいます。これは私がそれを設定しようとしている方法です:

<ul>
  <% if current_page?("/company") %>
    <li>Company Space</li>
  <% elsif current_page?("/user_page") %>
    <li>User Space</li>
  <% else %>
  <% end %>
</ul>

この部分を正しく記述したことはわかっていapplication.html.erbます。レイアウト ページに配置すると、問題なく動作するからです。ただし、上部のナビゲーションバーにまったく同じものを配置すると、機能しません。ナビゲーション バーは、_header.html.erb現在レイアウトで次のようにレンダリングされている部分呼び出しにあります。

<body>
  <%= javascript_include_tag "application" %>

  <%= render 'layouts/header' %>
  <p class="notice"><%= notice %></p>
  <p class="alert"><%= alert %></p>
  <%= yield %>
  <%= render 'layouts/footer' %>
</body>

これは、ナビゲーション バーが現在のページを検出していないことに関係していると思われます。なぜこれが起こっているのか誰かが教えてくれることを願っています。理想的には、この機能を使用できる比較的ドライなソリューションを見つけたいと思っています。(条件ごとに個別のパーシャルを作成し、パーシャルを表示するためのロジックを に入れることを考えましたapplication.html.erbが、これがナビゲーション バーの唯一のコンテンツではないことを考えると、その保守性は非常に悪そうです。)

助けてくれてありがとう!

4

3 に答える 3

1
<% if params[:controller] == 'company' %>
    <li>Company Space</li>
<% else params[:controller] == 'user_page' %>
    <li>User Space</li>
<% end %>
于 2013-09-26T19:29:04.037 に答える
1

ネイサンの答えを拡張するには、アクションを指定します

<% if params[:action] == 'company' %>
    <li>Company Space</li>
<% else params[:action] == 'user_page' %>
    <li>User Space</li>
<% end %>

これは機能します...しかし、最もクリーンな方法とは思えません。おそらく、よりきれいにするためにJSでそれをやってみませんか?

于 2013-09-26T19:45:47.073 に答える