我有一个不同的布局,我想应用到我的博客。所以在博客控制器里

layout: 'blog'

在我的博客控制器顶部的索引操作上方。
当我实际刷新页面时,将应用博客布局。但如果我从主页链接到blog_path,则布局不会应用,它仍然使用与主页相同的布局。同样,当我手动刷新页面时,它会应用布局。有什么建议吗?

最佳答案

土拨鼠
问题是Turbolinks
turbolinks是一个javascript库,它通过获取链接来工作,检查整个“页面”是否会更改,如果没有,只需从请求的资源中拖出<body>标记即可。虽然很痛苦,但它是为提高效率而设计的:
TurboLinks使Web应用程序中的以下链接更快。
而不是让浏览器重新编译javascript和css
在每次页面更改之间,它都会保持当前页面实例的活动状态,并且
只替换正文和标题。思考CGI VS
持续过程。
——
TurboLinks的主要问题是它经常会重新加载页面的<body>标记,这就是您在这里看到的问题。
在大多数用例中,这会破坏页面上的js/css;但是,对于您来说,问题似乎在于能否加载其他操作的layout
固定
解决这个问题更像是一个测试(我以前从未使用过带有layout特定问题的turbolinks)
我建议这样做:

#app/assets/javascripts/application.js
//require turbolinks -> REMOVE THIS LINE

#app/views/layouts/application.html.erb
<head>
  ...
  <%= stylesheet_link_tag "application" %> #-> remove turbolinks references
  <%= javascript_include_tag "application" %> #-> remove turbolinks references
</head>

这将基本上删除对turbolinks的任何引用,允许您测试这是否确实是问题所在。我知道,因为页面刷新时应用布局是turbolinks问题的标志(如果刷新页面,turbolinks就不能工作);这只是一个如何处理的问题

10-06 13:34
查看更多