Ruby on rails rails仅为管理员控制器显示超出收益范围的内容

Ruby on rails rails仅为管理员控制器显示超出收益范围的内容,ruby-on-rails,Ruby On Rails,如何将此代码放到/views/layouts/application.html.erb 我希望它位于之上,因为我希望它像一个标题,但只适用于管理控制器 因此,我的管理视图中有这段代码,但我想将其移动到application.html.erb,因此我不需要重复这段代码 <% if user_signed_in? %> <%= current_user.email %> <%= link_to('Logout', destroy_user_session_pa

如何将此代码放到/views/layouts/application.html.erb
我希望它位于
之上,因为我希望它像一个标题,但只适用于管理控制器

因此,我的管理视图中有这段代码,但我想将其移动到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 %>

:删除)%%>

    帖子 页面


这里最好的方法可能是使用它,它基本上允许Rails调用特定于您的
AdminController
(您将把它放在
app/views/layouts/admin.html.erb
)的布局,并在该文件中定义一个在主布局中也引用的块,然后呈现该主布局

显示示例的更新 app/views/layouts/admin.html.erb

:删除)%%>

    帖子 页面

app/views/layouts/application.html.erb
在您的/views/layouts/application.html.erb

把这个放在你的标题标签里

<%= yield :admin_only %>

并且,在呈现要放入布局标题的数据的其他页面中,执行以下操作:

<% content_for :admin_only do %>        
......data here ... 
<% end %>

……这里的数据。。。

好的,我这样做了:然后在我的application.html.erb上我写了:,那么这两者之间有什么区别,或者如果我去掉了yield:admin?如果你去掉了
yield:admin
,那么它就不会再为:admin显示
内容了。你没有得到它,使用yield或仅将(静态)内容放在我的管理视图上有什么区别?好吧,您需要将该内容放在管理控制器的每个视图中,而不是整个控制器的一个位置。非常感谢,我试试看,你看到我在另一个回答评论上写的问题了吗?@aldrien.h最好按照我提到的那样做,使用嵌套布局,因为根据你的建议,他们需要在该控制器的每个视图中重复相同的
内容\u:admin\u only
块(OP需要给定控制器中所有操作的标题)。我想你们说的是同一件事,@aldrien.h只需告诉我如何写出它的标题差异,因为这个答案是说将
的内容放在“你的另一页”中,而不是在管理员控制器布局中。那很好,我想我需要两个答案,除非你也解释如何为:admin编写内容,但在他写在这里之前我也理解了,因为我在rails指南上搜索了如何做到这一点,和他在这里写的完全一样,两个答案都很有用,谢谢
<%= yield :admin_only %>
<% content_for :admin_only do %>        
......data here ... 
<% end %>