2

我想我有同样的问题。 使用多个 yield 插入内容

我尝试了解决方案。在我看来,我试图<%= yield :content %>在我的 application.html.erb 和 havecontent_for :contentyield里面。但它不适用于我的应用程序。您能否就我的问题进行更多解释或提供示例场景?

里面的链接不能重新加载,所以我不会在我将显示的每个模板上使用渲染部分。

我最近才开始学习 Rails,所以对我来说有点困惑。谢谢你。

在此处输入图像描述

我试过这个;这只是一个示例,稍后我将修复侧边栏的连接。

在我的 applicaion.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>Clinks</title>
  <%= stylesheet_link_tag    "application", media: "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>

<body>
    <section id="container" >
        <%= render 'layouts/header' %>
        <%= render 'layouts/sidebar' %>
        <section id="main-content">
            <section class="wrapper">
                <div class="row">
                    <!-- %= yield % -->
                    <%=yield(:content) %>
                </div><!--/row -->
            </section><!--/wrapper -->
        </section><!--/main-content -->
    </section><!--/container -->
</body>
</html>

在我的 menu_tables.html.erblayouts文件夹中。

<% content_for(:content) do %>
    <%= render 'menu_tables/sidemenu' %>
    <%= yield %>
<% end %>
<%= render template: "layouts/application" %>

在我的 routes.rb

Rails.application.routes.draw do
  root :to => 'pages#home'
  resources :menu_tables, except: [:show]
end

然后在 menu_tables 控制器下的 _sidemenu.html.erb 中是链接的代码,因此侧边栏的每个链接都有不同的侧边菜单。

4

1 回答 1

2

可能你需要告诉你的控制器使用layout 'menu'. 在链接中,您提供了控制器的名称和匹配的布局,因此它“神奇地”工作。请参阅指南

2.2.14 查找布局

为了找到当前布局,Rails 首先在 app/views/layouts 中查找与控制器具有相同基本名称的文件。例如,来自 PhotosController 类的渲染动作将使用 app/views/layouts/photos.html.erb(或 app/views/layouts/photos.builder)。如果没有这种特定于控制器的布局,Rails 将使用 app/views/layouts/application.html.erb 或 app/views/layouts/application.builder。如果没有 .erb 布局,Rails 将使用 .builder 布局(如果存在)。Rails 还提供了几种方法来更精确地将特定布局分配给各个控制器和操作。

(注意:您可以查看日志中使用的布局,查找类似于 的行Rendered menu_items/index.html.erb within layouts/application

于 2015-08-14T03:57:25.240 回答