Cri*_*ano 4 ruby yield ruby-on-rails content-for ruby-on-rails-4
我试图在我的页面上插入内容,yield但每次操作都会从页面中删除整个内容.我有一个主要yield工作正常:
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
但是在一个页面上显示的新内容中,我有另一个yield:
<div class="container">
<%= render 'admins/menu' %>
<%= yield :admin %>
</div>
Run Code Online (Sandbox Code Playgroud)
当用户单击呈现的菜单时,应在该菜单下方显示新内容.
管理员/ _menu.html.erb
<div class="navbar">
<div class="navbar-inner">
<div class="container">
<ul class="nav">
<li><%= link_to "Users", :controller => "admins", :action => "test" %></li>
<li><%= link_to "1", ... %></li>
<li><%= link_to "2", ... %></li>
<li><%= link_to "3", ... %></li>
</ul>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
控制器:
class AdminsController < ApplicationController
def index
end
def test
@users = User.paginate(page: params[:page])
end
end
Run Code Online (Sandbox Code Playgroud)
test.html.erb
<% content_for :admin do %>
<h1>All users</h1>
...
<% end %>
Run Code Online (Sandbox Code Playgroud)
当我从菜单中单击"用户"选项时,页面刷新,菜单消失,"body"内没有显示任何内容.我希望内容显示在菜单下方.如何使用第二次产量并完成此功能?
我希望这个问题不会引起混淆.如果问题令人困惑,请在评论中写下我,我会立即编辑.
谢谢 :)
mar*_*wer 13
所以,当你进入index页面时,你将获得将放置在主布局中的html片段,这段html看起来像这样:
<div class="container">
<%= render 'admins/menu' %>
<%= yield :admin %>
</div>
Run Code Online (Sandbox Code Playgroud)
这段代码会yield :admin正常.
当你转到test页面时,你不再拥有这个HTML代码(因为它只属于该index方法).因此,您放入content_for(:admin)块中的任何内容都将被忽略,因为没有人打印它.
您可能想要做的是为所有管理页面创建共享布局.按照本指南,您将获得解决方案.
application.html.erb使用以下方法编辑布局:
<%= content_for?(:content) ? yield(:content) : yield %>
Run Code Online (Sandbox Code Playgroud)
代替
<%= yield %>
Run Code Online (Sandbox Code Playgroud)
然后在admins.html.erb文件layouts夹中创建一个文件来处理管理页面的布局.像这样的东西:
<% content_for :content do %>
<div class="container">
<%= render 'admins/menu' %>
<%= yield %>
</div>
<% end %>
<%= render template: "layouts/application" %>
Run Code Online (Sandbox Code Playgroud)
会没事的.然后在index.html.erb并且test.html.erb只是放置常规HTML内容,而不使用content_for(:admin)块.一切都应该工作正常,你将拥有自定义管理模板,与常规页面略有不同.
| 归档时间: |
|
| 查看次数: |
6656 次 |
| 最近记录: |