这里是_header.html.erb
我们的 Rails 4 应用程序,使用 Bootstrap 3 组件制作:
<header class="navbar navbar-fixed-top navbar-inverse">
<div class="container">
<nav>
<div class="col-xs-4">
<%= link_to "APP NAME", root_path, id: "logo" %>
</div>
<div class="col-xs-4 text-center">
<ul class="nav navbar-nav navbar-center">
<li><%= link_to "Features", features_path %></li>
<li><%= link_to "Pricing", pricing_path %></li>
<li><%= link_to "Blog", '#' %></li>
</ul>
</div>
<div class="col-xs-4">
<ul class="nav navbar-nav navbar-right">
<% if current_user.try(:admin?) %>
<li><%= link_to "Users", users_path %></li>
<% end %>
<% if logged_in? %>
<li><%= link_to "Dashboard", current_user %></li>
<li><%= link_to "Settings", current_user %></li>
<li><%= link_to "Log out", logout_path, method: "delete" %></li>
<% else %>
<li><%= link_to "Log in", login_path %></li>
<li><%= link_to "Sign up", signup_path %></li>
<% end %>
</ul>
</div>
</nav>
</div>
</header>
如您所见,这有条件地显示导航栏,具体取决于当前用户是注销、登录还是以管理员身份登录。
然而,我们想知道如何在不同的页面上显示不同的导航栏。
例如,在所有公共页面(主页、功能、定价、博客、帮助等)上,我们希望显示Features
, Pricing
& Blog
链接(无论用户是否登录),但在应用程序的内页(仪表板、设置等)上,我们希望删除这些链接。
编辑:为了让事情更清楚,我们所说的公共页面实际上是我们的static_pages
,这依赖于我们的StaticPages#Controller
,而仪表板和设置等内部应用程序页面则依赖于我们的Users#Controller
.
我们怎样才能做到这一点?我们需要创建一个新的_header.html.erb
部分的?
Rails 是否有特定的方法可以做到这一点?