在我的 Rails 应用程序中,我使用<html id=<%= params[:controller] + "_" + params[:action] %>
在views/layouts/application.html.erb中。
奇怪的是,价值观params[:controller]
and params[:action]
始终滞后 1 个请求如果它位于开口上方的任何位置<body>
tag.
所以如果我在users/1
,但我来自users/
,高于开盘的值<body>
将是控制器:“users”和操作:“index”。不应该params[:action]
是“秀”吗?
然后,如果我刷新页面,它会“赶上”并正确地具有控制器:“用户”和操作:“显示”。
为什么会发生这种情况?如何获取当前的请求控制器和操作?这些参数会在第一次之前才会更新吗yield
叫做?
对于控制器,您可以访问本地实例controller
。
如果您想要它的全名,您需要使用类似的名称controller.class.name.split("::").first
这会给你UsersController
在你的例子中。如果你只是想要users
要退回,您可以使用controller.controller_name
对于您可以使用的操作controller.action_name
UPDATE:
请在您的视图中尝试这些,看看它们是否也滞后:
<p><%= controller_name %></p>
<p><%= action_name %></p>
我怀疑他们都委托给我的回答中前面提到的控制器,但值得尝试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)