欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  web前端

Rails nested layout_html/css_WEB-ITnose

程序员文章站 2022-04-13 16:24:46
...
12 Apr 2016| rails

问题

  • 某rails项目 layouts/application.html.erb

   true %>     true %>            
...

现在需要另一个子layout,他 继承自layouts/application.html.erb,又有自己的内容,该怎么办呢?尽量把公共的部分抽出来,然后在不同的layout之间共享吗?

  • layouts/main.html.erb

        

这样可以解决问题但不完美,没有体现出 继承关系来,如果layout复杂,可能需要抽出很多的共享部分出来,而且子模板还是有很多重复的代码。

嵌套模板

在 application_helper.rb中加入下面的方法:

def parent_layout(layout)  @view_flow.set(:layout, output_buffer)  output = render(:file => "layouts/#{layout}")  self.output_buffer = ActionView::OutputBuffer.new(output)end

然后 layouts/main.html.erb就可以变成这样的了

直接在子模板中指定父模板,完美的继承关系,而且可以进行多次,比如

  • layouts/profile.html.erb

        

最后这3个layout的关系如下:

application < main < profile

Reference

http://m.onkey.org/nested-layouts