3

このコードを使用して、現在アクティブなメニュー タブを Twitter Bootstrap で強調表示しています。

  def nav_link_to(link_text, link_path, options = nil)
    class_name = current_page?(link_path) ? 'active' : ''

    content_tag(:li, :class => class_name) do
      link_to link_text, link_path, options
    end
  end

もちろん、これにより、指定されたリンクが現在のページである場合にのみ、リンクがアクティブになります。現在のコントローラーの下のリンクに対して「アクティブ」を返すように、この関数を変更するにはどうすればよいですか? つまり、Posts コントローラーのすべてのアクションで、リンクがアクティブになるのでしょうか?

4

4 に答える 4

15

を使用controller_nameして、現在のコントローラーの名前を取得できます。

于 2012-06-30T15:16:22.057 に答える
6

これは次の方法で解決できます。

Rails.application.routes.recognize_path(link_path)[:controller]

于 2012-11-15T12:27:03.247 に答える
5

params[:controller]コントローラー名とその名前空間を返します。

コントローラー名のみを取得したい場合は、を使用する必要がありますcontroller.controller_name

class Admin::Posts; end

# from the view
params[:controller] 
=> 'admin/posts'

controller.controller_name
=> 'posts'
于 2013-10-07T07:39:10.720 に答える
0

これを正しく読んだかどうかはわかりませんが、現在のコントローラーを確認するために get param を使用しないでください。

使ってみましたrequest.pathか?つまり、以下のリンクのいずれかのパスに「request.path」が含まれているかどうかを確認してください...

于 2013-06-24T17:35:26.057 に答える