我可以在视图中获取当前控制器的名称吗?
有没有办法从视图中找出当前的控制器是什么?
对于为什么我想知道这个例子:如果几个控制器共享相同的布局,我可能有一个布局ERB文件中的一部分,我想突出显示基于控制器的当前页面的菜单项。
也许这是一个不好的方法。 如果是这样,那么更好的方法是什么呢?
不过,我有兴趣知道如何获得当前控制器的名称。
(显然我可以在每个控制器中放置@controller_name = 'users'
这样的东西,但这看起来像是Rails在幕后已经完成的东西,所以我只是想知道是否有内置的方法。
controller_name
保存用于为当前视图提供服务的controller_name
的名称。
另外,在Rails指南中,它说:
params散列将始终包含:controller和:action键,但是您应该使用方法controller_name和action_name来访问这些值
ActionController参数
假设你有一个active
的CSS类,它应该被插入到当前页面打开的任何链接中(也许你可以用不同的样式)。 如果你有一个about
动作的static_pages
控制器,你可以在你的视图中突出显示链接。
<li> <a class='button <% if controller.controller_name == "static_pages" && controller.action_name == "about" %>active<%end%>' href="/about"> About Us </a> </li>
#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'
参考