Rails中的嵌套布局?

时间:2016-03-20 19:11:41

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

我制作的网站每个页面都有一个页眉/页脚,但页面内容的布局不同,<head>部分和样式表完全不同。如何在另一个模板中渲染模板,使其成为完全独立的部分 - 它不会继承任何父级样式,也不会影响父级?

我尝试过&lt;%=渲染模板:&#39; layouts / test&#39; %&gt;,但样式表重叠。

2 个答案:

答案 0 :(得分:1)

看起来你需要的是偏爱。您可以将它们分成不同的组件并使用rails partial。

例如,如果您始终使用相同的页眉和页脚,则可以将它们放在layouts/application.html.erb文件中。然后在每个页面的正文模板中,您可以使用partial来呈现每个单独的部分。

只需创建一个像_seciont_1.html.erb这样的文件。然后在相应的页面中,使用<%= render partial: "section_1" %>进行渲染。更多信息请查看以下链接。

http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

------------------------------
|           header           |
------------------------------
|         |                  |
|section_1|     section_2    |
|         |                  |
------------------------------
|           footer           |
------------------------------

对于样式表,在application.cssapplication.scss文件中(位于app/assets/stylesheets/下),删除行*= require_tree .。这一行是加载所有样式表的行。相反,只选择您在所有网页上使用的内容,例如页脚和标题的css文件。

然后在每个特定的部分文件中,加载相应的css文件。

<%= stylesheet_link_tag 'section_1', media: 'all', 'data-turbolinks-track' => true %>

为您的JS文件执行相同操作。您可以在生成application.js的{​​{1}}中找到它。删除行app/assets/javascript/并使用此命令需要相应的js文件。

//= require_tree .

答案 1 :(得分:0)

您可以使用iframe。 iframe基本上是单独的HTML文档,带有自己的样式表等。问题是他们的父页面确实不知道子页面的大小,所以你需要选择一个宽度并且是对内部滚动条感到满意,或者使用javascript。

更好的解决方案可能是找出一种更好的方法来管理您的CSS,这样您就不会做出影响他们不应该做的事情的事情。随着软件的发展,通常会有很多东西咬你。有很多方法可以做到这一点,但从个人的角度来看,我是BEM语法的忠实粉丝。

有一个很好的overview here - 请记住,它会去工作,所以不要把不同的开发人员做的事作为福音!

相关问题