如何将此代码放在/views/layouts/application.html.erb上
我希望它高于<%= yield %>
因为我希望它像一个标题,但仅限于管理员控制器。
所以我的管理员视图中有这个代码,但是我想把它移到application.html.erb,所以我不想重复那段代码
<% if user_signed_in? %>
<%= current_user.email %>
<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
<hr>
<ul class="admin-nav">
<li rel="posts">Posts</li>
<li rel="pages">Pages</li>
</ul>
<hr>
<% end %>
答案 0 :(得分:2)
这里最好的方法可能就是使用a nested layout,它基本上允许Rails调用特定于AdminController
的布局(你将它放在app/views/layouts/admin.html.erb
内)并在其中用于定义content_for
块的文件,这些块也在主布局中引用,然后呈现该主布局。
<% content_for :admin do %>
<% if user_signed_in? %>
<%= current_user.email %>
<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>
<hr>
<ul class="admin-nav">
<li rel="posts">Posts</li>
<li rel="pages">Pages</li>
</ul>
<hr>
<% end %>
<% end %>
<%= render template: "layouts/application" %>
<%# other stuff for your layout %>
<body>
<%= content_for?(:admin) ? yield(:admin) : yield %>
</body>
答案 1 :(得分:1)
在 /views/layouts/application.html.erb
中将它放在标题标记
中<%= yield :admin_only %>
并且,在您的其他页面中,将数据放入布局标题中,请执行以下操作:
<% content_for :admin_only do %>
......data here ...
<% end %>