0

アプリのメニュー バーに一連のリンクを生成しています。ユーザーがメニュー バーのページの 1 つを表示しているときに、現在のページを表示していることを示すようにスタイルを変更したいと思います。これは、私が取り組んできた非常に簡単な作業です。

私がやりたいことは、ヘルパーを枯渇させることです。私は次のようにリンクを構築しています:

link_to('events', :controller => 'event_sections', :action => 'show', :group_id => @group), :class => "current_page_item"

「現在のページの場合」コードで何度も繰り返しています。最初に必要なすべてのリンクを構築してから、それに :class => "current_page_item" を追加する良い方法があるかどうか疑問に思っていました。

4

3 に答える 3

1

私は別の方法でアプローチします: コントローラーで @current_page_name のような変数を設定すると (各アクションで設定されます)、すべての link_tos がクラスを追加する前にその変数をチェックします。

次に、それをさらにドライにするために、link_to をラップするパーシャルまたは関数を作成できます (idlefingers が同様の回答を投稿したようです)。

于 2010-12-16T16:43:58.240 に答える
1

「現在のページの場合」ロジックがどれほど複雑かによって異なります。私は通常、このような単純なヘルパーを作成して、コントローラー名とリンク テキストを使用して、リンクが「現在」かどうかを判断します。

def tab(name, link)
  css_class = (controller.controller_name.humanize =~ /#{name}/i ? "current_page_item" : "page_item")
  link_to name, link, :class => css_class
end

次に、タブを作成している link_to の代わりにこれを呼び出すことができます。

= tab "Events", :controller => 'event_sections', :action => 'show', :group_id => @group
于 2010-12-16T16:42:34.043 に答える