Ruby on rails 使用多个收益插入内容
我试图用Ruby on rails 使用多个收益插入内容,ruby-on-rails,ruby,ruby-on-rails-4,yield,content-for,Ruby On Rails,Ruby,Ruby On Rails 4,Yield,Content For,我试图用yield在我的页面上插入内容,但每次操作都会删除页面上的全部内容。我有一个主要的yield,运行良好: <body> <%= render 'layouts/header' %> <div class="container"> <%= yield %> <%= render 'layouts/footer' %> </div> </body> 当用户单击
yield
在我的页面上插入内容,但每次操作都会删除页面上的全部内容。我有一个主要的yield
,运行良好:
<body>
<%= render 'layouts/header' %>
<div class="container">
<%= yield %>
<%= render 'layouts/footer' %>
</div>
</body>
当用户单击呈现的菜单时,新内容应显示在该菜单下方
admins/_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>
- “管理员”,操作=>“测试”%>
控制器:
class AdminsController < ApplicationController
def index
end
def test
@users = User.paginate(page: params[:page])
end
end
class AdminsController
test.html.erb
<% content_for :admin do %>
<h1>All users</h1>
...
<% end %>
所有用户
...
当我从菜单中单击“用户”选项时,页面刷新,菜单消失,“正文”中没有显示任何内容。我希望内容显示在菜单下方。如何使用第二个收益率并实现此功能
我希望这个问题不会令人困惑。若问题令人困惑,请给我写评论,我会立即编辑
谢谢:)因此,当您转到
索引
页面时,您将得到一段html,它将被放置在主布局中,这段html如下所示:
<div class="container">
<%= render 'admins/menu' %>
<%= yield :admin %>
</div>
<% content_for :content do %>
<div class="container">
<%= render 'admins/menu' %>
<%= yield %>
</div>
<% end %>
<%= render template: "layouts/application" %>
而不是
<%= yield %>
好的。然后在
index.html.erb
和test.html.erb
中,只放置常规html内容,而不使用(:admin)块的内容。一切正常,您将拥有自定义的管理模板,外观与常规页面略有不同。调用yield
在助手模块中不起作用,而content\u for
起作用,因此您应该替换助手文件中的yield
调用
同样值得注意的是:当您仅在一个位置而不是多个位置使用该方法时,建议使用provide
而不是content\u。您将获得更好的性能,因为它不会在寻找更多内容时让缓冲区保持打开状态,并且您的意图对于其他可能看到您的代码的开发人员来说会更清楚。(请参阅)我发现必须在名称空间标记之前添加一个yield
(不实际输出)
标题
...
代码放在哪个文件中?
只是一种预感,但您是否尝试过查看/admins/index.html中的
?@marzapower-而不是
。erb@CDub-我试过了,但还是一样。谢谢,但我现在如何访问admins.html.erb文件?我在主页上有一个链接,在路径中有:通过“get”将“/admin_dashboard”匹配到“admins#index”。对于AdminsController
的每个方法,将自动加载admins.html.erb
文件(放置在应用程序主布局附近的layouts
文件夹中)。将其视为application.html.erb
布局的扩展。它可以工作并自动加载,但问题是admins.html.erb完全删除了所有内容,现在我只有一个完全空白的页面,上面只有菜单,没有任何样式。您是否按照要求修改了应用程序布局?您应该只替换
行,而不是整个文件!谢谢,现在可以用了!我最近刚开始学习Rails,所以对我来说有点困惑。你挽救了这一天:)谢谢你的解释:)
<%= yield %>
<% content_for :content do %>
<div class="container">
<%= render 'admins/menu' %>
<%= yield %>
</div>
<% end %>
<%= render template: "layouts/application" %>