Rails:获取当前请求的控制器和操作

Don*_*n P 18 ruby-on-rails ruby-on-rails-4

在我的Rails应用程序中,我<html id=<%= params[:controller] + "_" + params[:action] %>在views/layouts/application.html.erb中使用.

奇怪的是,值params[:controller]params[:action]始终由1名落后的请求,如果是开口上方的任何地方<body>标记.

因此,如果我在users/1,但我来自users/,开头的值<body>将是控制器:"用户"和操作:"索引".不params[:action]应该"显示"?

然后,如果我刷新页面,它会"赶上"并正确地拥有控制器:"用户"和操作:"显示".

为什么会这样?如何获取当前请求控制器和操作?这些参数在第一次yield调用之前是否会更新?

Jon*_*Jon 44

对于控制器,您可以访问本地实例controller.如果你想要它的全名,你需要使用类似的东西在你的例子中controller.class.name.split("::").first给你UsersController.如果你只想users回来,你可以使用controller.controller_name

对于您可以使用的操作 controller.action_name

更新:

请在您的视图中尝试这些,看看它们是否也滞后:

<p><%= controller_name %></p>
<p><%= action_name %></p>
Run Code Online (Sandbox Code Playgroud)

我怀疑他们都在我的答案中委托给前面提到的控制器,但值得尝试.


Don*_*n P 2

这是涡轮连杆。关闭涡轮链接,你就可以开始了。http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4

  • 该死的涡轮连杆。有了现代浏览器和连接速度,我真的想知道它们是否值得这么麻烦。 (3认同)