加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Rails中扩展现有布局

发布时间:2020-12-16 23:09:34 所属栏目:百科 来源:网络整理
导读:我有我的主应用程序布局,但后来我的网站的/ account部分与应用程序布局markupwise具有完全相同的布局,除了/ account页面在布局的内容区域中添加了侧边栏. 我不想公然复制应用程序布局并创建几乎冗余的“帐户”布局,而是扩展应用程序布局,在内容区域添加侧边
我有我的主应用程序布局,但后来我的网站的/ account部分与应用程序布局markupwise具有完全相同的布局,除了/ account页面在布局的内容区域中添加了侧边栏.

我不想公然复制应用程序布局并创建几乎冗余的“帐户”布局,而是扩展应用程序布局,在内容区域添加侧边栏.

所以我的应用程序布局中有这样的东西:

<html>
<body>

<div id="content">

<%= yield %>

</div>

</body>
</html>

而且我要

<html>
<body>

<div id="content">

  <div id="sidebar"></div>

  <%= yield %>

</div>

</body>
</html>

有没有办法在不复制代码的情况下实现这一目标?

解决方法

您可以在布局中拥有多个产量,只需为其他产品命名即可:
<html>
<body>
  <div id="content">
    <%= yield :sidebar %>
    <%= yield %>
  </div>
</body>
</html>

您可以使用content_for方法为该产量添加HTML

<% content_for :sidebar do -%>
  <div id="sidebar"></div>
<% end -%>

但是你必须将它添加到你想要有侧边栏的每个视图中.而是创建views / layouts / application_with_sidebar.html.erb

<% content_for :sidebar do -%>
  <div id="sidebar"></div>
<% end -%>

<%= render :file => 'layouts/application' %>

Further reading

如果您希望将收益率保持在最小值,则可以嵌套布局.

视图/布局/ application.html.erb

<html>
<body>
  <div id="content">
    <%= yield(:with_sidebar) or yield %>
  </div>
</body>
</html>

视图/布局/ application_with_sidebar.html.erb

<% content_for :with_sidebar do -%>
  <div id="sidebar"></div>
<% end -%>

<%= render :file => 'layouts/application' %>

控制器/ accounts_controller.rb

class AccountsController < ApplicationController
  layout 'application_with_sidebar'
  ...
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读