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 参数来查看当前控制器。

你试过使用request.path吗?换句话说,检查以下任何链接是否在其路径中包含“request.path”...

于 2013-06-24T17:35:26.057 回答