【发布时间】:2014-01-28 07:46:05
【问题描述】:
在我的 Rails 应用程序中,我在views/layouts/application.html.erb 中使用<html id=<%= params[:controller] + "_" + params[:action] %>。
奇怪的是,params[:controller] 和 params[:action] 的值总是滞后 1 个请求如果它高于打开的 <body> 标记。
所以如果我在users/1,但我来自users/,则上面打开<body> 的值将是控制器:“用户”和操作:“索引”。 params[:action] 不应该是“秀”吗?
然后,如果我刷新页面,它会“赶上”并正确拥有控制器:“用户”和操作:“显示”。
为什么会这样?如何获取当前请求控制器和操作?这些参数在第一次调用yield 之前不会更新吗?
【问题讨论】:
-
<html id="<%= "#{params[:controller]}_#{params[:action]}" %>">怎么样? -
调试渲染此布局的控制器并查看实际值。
-
已编辑问题 - 调试在打开正文标记后显示正确的值,但在打开正文标记之前显示滞后值。
-
你在使用 turbolinks 吗?
-
....是的。这是 turbolinks 第二次引起这些疯狂的错误之一。 turbolinks 带来的性能提升真的值得吗?它似乎让做简单的事情变得困难,例如这个。
标签: ruby-on-rails ruby-on-rails-4