我认为我有同样的问题。 Using multiple yields to insert content
我尝试了解决方案。我试着在我的application.html.erb中有<%= yield :content %>
,并且在我的视图中有content_for :content
和yield
。但它不适用于我的应用程序。你能解释一下我的问题吗?或者给出示例情景吗?
里面的链接,不能重新加载,所以我不会在我将显示的每个模板上使用render partial。
我刚刚开始学习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>
在layouts
文件夹内的menu_tables.html.erb中。
<% 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中是链接的代码,因此侧边栏中的每个链接都有不同的侧边框。
答案 0 :(得分:2)
您可能需要告诉控制器使用layout 'menu'
。在链接中,您提供了控制器的名称和匹配的布局,因此它“神奇地”工作。
见guides:
2.2.14查找布局
要查找当前布局,Rails首先在中查找文件 app / views / layouts与控制器具有相同的基本名称。对于 例如,从PhotosController类渲染动作将使用 app / views / layouts / photos.html.erb(或 应用程序/视图/布局/ photos.builder)。如果没有这样的话 特定于控制器的布局,Rails将使用 app / views / layouts / application.html.erb或 应用程序/视图/布局/ application.builder。如果没有.erb布局, 如果存在,Rails将使用.builder布局。 Rails还提供 有几种方法可以更精确地为个人分配特定的布局 控制者和行动。
(注意:您可以查看日志中使用的布局,查找类似于Rendered menu_items/index.html.erb within layouts/application
的行)