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_name
of users
和controller_path
of 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类
,请在body
application.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
改用