0

次のタイプのページ設定があります。

ヘッダー-一貫性のある左側-<%=利回り%>を含む右側-ほとんど静的メニューを含むul

だから、私がやりたいのは、a)現在のページliにクラスを追加することです。したがって、たとえば、aboutページでは、右側のaboutliが.currentを追加します。

b)現在のページの右側にサブメニューを表示します。したがって、liがabout.currentの場合、そのli内にサブメニューを表示できます。

レイアウトは(アプリケーションレイアウトの目的として)すべてのページにあり、すべてのページが右側のメニューに表示されているわけではありません。したがって、問題は、.currentを追加できるように、ページ名をアプリケーションレイアウトに渡す変数または呼び出しを渡すことができるか、またはこのようなものを処理するための最良の方法は何ですか?すべてのページにメニューバーを追加する必要があるとしても、アプリケーションレイアウトに適切なメニューバーを含めないという答えはありますか?

提案を探しています。

4

1 に答える 1

1

ヘルパーメソッドはcurrent_page?、URLが現在のページのものであるかどうかを教えてくれます。したがって、次のようなことができます。

<li><%= link_to "Something", something_url, :class => (current_page?(something_url) ? "current" : "") %></li>

さらに良いことに、それを自動的に行うヘルパーメソッドを定義することができます。

def link_to_with_current_class(name, url, options = {})
  if current_page?(url)
    if options[:class]
      options[:class] += " current"
    else
      options[:class] = "current"
    end
  end
  link_to(name, url, options)
end

その後:

<li><%= link_to_with_current_class "Something", something_url %></li>

http://apidock.com/rails/ActionView/Helpers/UrlHelper/current_page%3F

于 2012-10-01T23:36:50.303 に答える