ruby-on-rails - 页面加载时未应用布局

标签 ruby-on-rails ruby ruby-on-rails-4 erb

我有一个不同的布局,我想应用于我的博客。所以在博客 Controller 中我放了

layout: 'blog'

在我的博客 Controller 顶部的索引操作之上。

当我实际刷新页面时,将应用博客布局。但是,如果我从主页链接到 blog_path,则不会应用布局,它仍然使用与主页相同的布局。同样,当我手动刷新页面时,它会应用布局。有什么建议吗?

最佳答案

涡轮链接

问题将是Turbolinks

Turbolinks 是一个 javascript 库,它通过获取您的链接来工作,检查整体“页面”是否会发生变化,如果没有,则只需拉出 <body>标记 rom 所请求的资源。虽然很痛苦,但它是为提高效率而设计的:

Turbolinks makes following links in your web application faster. Instead of letting the browser recompile the JavaScript and CSS between each page change, it keeps the current page instance alive and replaces only the body and the title in the head. Think CGI vs persistent process.

--

Turbolinks 的主要问题是它通常只会重新加载 <body>您页面的标记,这就是您在此处看到的问题。

在大多数情况下,这会破坏页面上的 JS/CSS;但是,对您来说,问题似乎在于能够加载 layout你的其他行为


修复

对此的修复更像是一个测试(我之前从未将 Turbolinks 用于 layout 特定问题)

我建议这样做:

#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 将无法工作);这只是如何使用它的问题

关于ruby-on-rails - 页面加载时未应用布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25276288/

相关文章:

javascript - 无法将 jquery "on click"与 bootstrap carousel 一起使用

ruby - 为所有新实例禁用 net::http 的 use_ssl

javascript - 错误 : It isn't possible to write into a document from an asynchronously-loaded external script

ruby-on-rails - Rails 4.如何向通过局部渲染的表单添加authenticity_token?

ruby-on-rails - Ruby on Rails 设计翻译

ruby - 如何在单独的进程中运行代码?

ruby - 如何在 Ruby 可枚举中获取底层对象的类?

ruby-on-rails - rails to_xml/to_json 选项

ruby-on-rails - 在 Rails 中呈现路由错误的 404 页面

ruby-on-rails - 尝试在 heroku 上部署但遇到错误