Ruby on rails 如何在Rails中获取URL的当前控制器?

Ruby on rails 如何在Rails中获取URL的当前控制器?,ruby-on-rails,url,twitter-bootstrap,Ruby On Rails,Url,Twitter Bootstrap,我使用以下代码通过Twitter引导突出显示当前活动的菜单选项卡: 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

我使用以下代码通过Twitter引导突出显示当前活动的菜单选项卡:

  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
当然,只有当给定的链接是当前页面时,才会激活该链接。 如何更改此函数,使其对当前控制器下的任何链接返回“活动”?
换句话说,对于POST控制器的所有操作,链接都将处于活动状态?

您可以使用
控制器\u name
获取当前控制器的名称。

这可以通过以下方法解决:


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

不确定我是否正确阅读了此内容,但您不应该使用get参数查看当前控制器


您是否尝试过使用
request.path
?换句话说,检查下面的任何链接是否在其路径中包含“request.path…”。

params[:controller]
返回控制器名称及其命名空间

如果只想获取控制器名称,则应使用
controller.controller\u name

class Admin::Posts; end

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

controller.controller_name
=> 'posts'

是的,但问题是-我如何检查链接或URL是否属于某个控制器-这就是代码的内容。你不知道。但是您可以手动使用它:
link_到'posts',posts_路径,:class=>params[:controller]==''posts'?'活动“:”
您可以,比如,regex it<代码>:类=>路径=~params[:控制器]?'活动“:”。。。但我觉得这很恶心。指南建议使用
controller\u name
而不是
params[:controller]
。使用controller\u name和/或action\u name是解决此问题的常用方法