gpt4 book ai didi

ruby-on-rails - Ruby 布局继承

转载 作者:行者123 更新时间:2023-12-04 06:00:20 28 4
gpt4 key购买 nike

我想知道 ruby​​ 中是否有任何布局继承实现。
在 symfony 中,你可以这样做:

layoutmain.html
Give <head> and all that here
<body>
<h3>{{title}}</h3>

{{block view}}
<div class="row">
<div class="span3">
{{content}}
</div>
</div>

{{end block}}


</body>


layout2.html
{{inherits layoutman}}
{{block view}}
<div class="container">
Structure it differently
</div>
{{end block}}

可以这么说,它让您继承整个模板并覆盖不同布局的部分。所以脚本等保持在主模板中,但您可以更改 View 结构。所以你可以在第一个布局中重用一些代码

我在github上找到了一些液体继承项目,但是看起来已经过时了

最佳答案

我使用以下方法来实现布局的“嵌套”,这是我发现最有用的布局继承形式。

在主应用程序帮助模块 app/helpers/application_helper.rb我定义了一个辅助方法 parent_layout :

module ApplicationHelper
def parent_layout(layout)
@view_flow.set(:layout, self.output_buffer)
self.output_buffer = render(:file => layout)
end
end

该助手负责捕获当前布局的输出,然后在父 yield 插入子布局时渲染指定的父布局。 s。

然后在我看来,我可以按如下方式设置布局继承。我从我的主要应用程序布局开始 app/views/layouts/application.html.erb这是此配置中的子布局:
<div class="content">
<h1><%= content_for?(:title) ? yield(:title) : 'Untitled' %></h1>
<div class="inner">
<%= yield %>
</div>
</div>
<%= parent_layout 'layouts/container' %>

调用辅助方法 parent_layout指定 application.html.erbcontainer.html.erb 的子布局.然后我定义父布局 app/views/layouts/container.html.erb如下:
<!DOCTYPE html>
<html>
<head>
<title>Sample</title>
</head>
<body>
<%= yield %>
</body>
</html>
yieldcontainer.html.erb产生于“派生”(或子)布局 application.html.erb ,即它插入渲染的输出 application.html.erb进入 <body>container.html.erb .请注意 parent_layout call 需要出现在模板的末尾,因为它会捕获布局的输出,直到它被调用为止。

这是基于 this文章,但已更新为在 Rails 3.2 中工作(希望以后)。我没有在 Rails 4 中尝试过,但你可以得到类似的工作。

关于ruby-on-rails - Ruby 布局继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18213336/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com