Answers:
在Rails指南中,它说:
params哈希将始终包含:controller和:action键,但应使用controller_name和action_name方法访问这些值
假设您有一个CSS类active,应该将其插入当前打开了页面的任何链接中(也许以便您可以使用不同的样式)。如果您的static_pages控制器具有about操作,则可以在视图中突出显示链接,如下所示:
<li>
<a class='button <% if controller.controller_name == "static_pages" && controller.action_name == "about" %>active<%end%>' href="https://stackoverflow.com/about">
About Us
</a>
</li>
Admin::Orders则controller_name和params[:controller]将分别为"orders"和"admin/orders"。
Admin::UsersController实际上有一个controller_nameof users和controller_pathof admin/users。
#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) %>
controller_path保存用于提供当前视图的控制器的路径。(即:)admin/settings。
和
controller_name包含用于提供当前视图的控制器的名称。(即:)settings。
如果要在应用程序中使用所有样式表,只需在application.html.erb中添加此行。将其插入<head> 标签内
<%= stylesheet_link_tag controller.controller_name , media: 'all', 'data-turbolinks-track': 'reload' %>
另外,要在不同的控制器上指定相同的CSS类
,请在bodyapplication.html.erb的行中添加此行
<body class="<%= controller.controller_name %>-<%= controller.action_name %>">
因此,例如,现在我想p在“ home”控制器和“ index”操作中更改标签。内部index.scss文件添加。
.nameOfController-nameOfAction <tag> { }
.home-index p {
color:red !important;
}
params鉴于此,实际上是不好的做法。请controller_name改用