gpt4 book ai didi

html - 应用程序布局中的嵌套布局

转载 作者:可可西里 更新时间:2023-11-01 13:34:01 26 4
gpt4 key购买 nike

我对嵌套布局没有什么问题。在我的网站上,我需要为管理员制作一个单独的网站部分。

我的 application.html.erb 里有这个文件:

<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>

我想知道我现在如何制作另一个像这样的模板插入到 <%= yield %> 中因为对于管理员部分,我再次需要网站的固定部分,如 headerfooter在主要布局中。而不是 headerfooter我会有两个菜单。我要<%= yield %>填充新模板,顶部有菜单和新的 <%= yield %>它将充满来自管理 Controller 的操作。因此,菜单将始终位于顶部。

我做了一个部分菜单 views/admins/_menu.html.erb :

<div>  
<div>
<div class="container">
<ul>
<li><%= link_to "Action1", '#' %></li>
<li><%= link_to "Action2", '#' %></li>
<li><%= link_to "Action3", '#' %></li>
</ul>
</div>
</div>
</div>

我的新布局是 layouts/sublayouts/admin.html.erb :

<%= render 'admins/menu' %>
<%= yield %>

目前的替代方案是渲染 views/admins/_menu.html.erb在顶部的每个 View 中,但这对我来说并不是一个好的解决方案。

常规站点将具有以下结构:

Header/Menu
|
Container
|Content
Footer

管理站点将具有以下结构:

Header/Menu
|
Container
|Content
|Admin Menu
|Admin Content
|
Footer

实现此目标的最佳方法是什么?

最佳答案

更新:根据评论,我更新了答案以更好地理解问题

最好的方法是将其合并到您的 application.html.erb 布局中。

所需的行为是在用户单击管理面板链接或管理菜单上的任何链接时显示管理菜单。

我推荐的方法是你有一个管理 Controller 来处理路由到你所有的管理 View ,所以点击管理面板按钮,管理菜单中的所有链接都将是由您的管理员 Controller 处理。像这样向您的管理 Controller 添加一个 before_filter:

# app/controller/admin_controller.rb
class AdminController < ActionController::Base
before_filter: set_admin_status

private
def set_admin_status
@admin = true
end
end

在您的应用程序模板中执行以下操作:

# application.html.erb
<body>
<%= render 'layouts/header' %>
<div class="container">
<% if @admin %>
<%= render 'admins/menu' %>
<% end %>
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>

这应该做的是,每次您导航到与 管理面板 或管理菜单中的任何链接对应的页面时,它都会将 @admin_status 标志设置为 true 并且您的布局将呈现管理菜单,我认为这是所需的行为。

关于html - 应用程序布局中的嵌套布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21786289/

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