代码之家  ›  专栏  ›  技术社区  ›  Dan Tao

我可以在视图中获取当前控制器的名称吗?

  •  191
  • Dan Tao  · 技术社区  · 14 年前

    也许这是个坏方法。如果是这样的话,你更喜欢哪种方式?

    不过,我想知道如何获得当前控制器的名称。

    (显然我可以把 @controller_name = 'users' 在每个控制器中;但这似乎是Rails在幕后已经做过的事情。所以我只是想知道是否有一种内在的方式。)

    4 回复  |  直到 9 年前
        1
  •  262
  •   mb21    7 年前

    controller_name 保存用于为当前视图提供服务的控制器的名称。

        2
  •  265
  •   Musili Alfred M.    3 年前

    使用 controller.controller_name

    在导轨上写着:

    params散列将始终包含:controller和:action键,但您应该使用这些方法 控制器名称 而是访问这些值

    ActionController Parameters

    假设你有一个CSS类 active static_pages about 操作,然后可以在视图中这样突出显示链接:

    <li>
      <a class='button <% if controller.controller_name == "static_pages" && controller.action_name == "about" %>active<%end%>' href="/about">
          About Us
      </a>
    </li>
    
        3
  •  91
  •   Juanito Fatas    6 年前
    #to get controller name:
    <%= controller.controller_name %>
    #=> 'users'
    
    #to get action name, it is the method:
    <%= controller.action_name %>
    #=> 'show'
    
    
    #to get id information:
    <%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
    #=> '23'
    
    # or display nicely
    <%= debug Rails.application.routes.recognize_path(request.url) %>
    

    reference

        4
  •  5
  •   Ricky Notaro-Garcia    6 年前

    controller_path 保存用于服务于当前视图的控制器的路径。(即: admin/settings ).

    controller_name settings

        5
  •  1
  •   Sami    4 年前

    <head> 标签

      <%= stylesheet_link_tag  controller.controller_name , media: 'all', 'data-turbolinks-track': 'reload' %>
    

    另外,在不同的控制器上指定相同的类CSS
    将此行添加到 body 的应用程序.html.erb

      <body class="<%= controller.controller_name %>-<%= controller.action_name %>">
    

    p 在“主”控制器和“索引”操作中添加标记。 内部 index.scss

    .nameOfController-nameOfAction <tag> { }
    

     .home-index p {
            color:red !important;
          }