布局未应用于页面加载

时间:2014-08-13 00:31:44

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

我想要将不同的布局应用到我的博客中。所以在博客控制器中我放了

layout: 'blog'

位于索引操作上方的博客控制器顶部。

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

3 个答案:

答案 0 :(得分:2)

<强> Turbolinks

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

答案 1 :(得分:0)

在layout文件夹中,如果你定义了blog.html.erb,它会在BlogController中加载它。

答案 2 :(得分:0)

您必须拥有app/views/layout/blog.html.erb布局文件。