Rails:获取当前请求的控制器和操作
在我的Rails应用程序中,我在views / layouts / application.html.erb中使用<html id=
。
奇怪的是, params[:controller]
和params[:action]
总是滞后1个请求, 如果它位于开始标记之上的任何位置。
因此,如果我在users/1
,但我来自users/
,则打开的值将是控制器:“users”和action:“index”。
params[:action]
不应该是“show”吗?
然后,如果我刷新页面,它会“赶上”并正确地拥有控制器:“用户”和操作:“显示”。
为什么会这样? 如何获取当前请求控制器和操作? 在第一次调用yield
之前,这些参数是否会更新?
对于控制器,您可以访问本地实例controller
。 如果你想要它的全名,你需要使用类似controller.class.name.split("::").first
它将在你的例子中给你UsersController
。 如果您只是想要返回users
,则可以使用controller.controller_name
对于该操作,您可以使用controller.action_name
更新:
请在您的视图中尝试这些,看看它们是否也滞后:
<%= controller_name %>
<%= action_name %>
我怀疑他们都在我的答案中委托给前面提到的控制器,但是值得一试。
这是涡旋式的。 关掉turbolinks,你很高兴。 http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4