加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 4 / Bootstrap 3:如何在不同的页面上显

发布时间:2020-12-17 01:42:58 所属栏目:百科 来源:网络整理
导读:这是我们的Rails 4应用程序的_header.html.erb,使用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-
这是我们的Rails 4应用程序的_header.html.erb,使用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>

如您所见,这有条件地显示导航栏,具体取决于当前用户是以注销,登录还是以管理员身份登录.

但是,我们想知道如何在不同的页面上显示不同的导航栏.

例如,在所有公共页面(主页,功能,定价,博客,帮助等)上,我们希望显示功能,定价和广告.博客链接(无论用户是否登录),但在应用程序的内页(仪表板,设置等)上,我们希望删除这些链接.

编辑:为了使事情更清楚,我们称之为公共页面的实际上是我们的static_pages,它依赖于我们的StaticPages#Controller,而内部应用程序页面(如仪表板和设置)依赖于我们的用户#Controller.

我们怎样才能做到这一点?我们需要创建一个新的_header.html.erb部分吗?

有没有特定的Rails方法呢?

解决方法

您可以将导航栏的每个变体放在它自己的部分中并使用content_for.

在您的应用程序布局中,您可以使用逻辑来检查是否应该呈现特定的导航栏,如下所示:

<% if content_for?(:navbar) %>
    <%= yield(:navbar) %>
<% else %>
   # code for default navbar
<% end %>

在您的视图中,您需要不同的导航栏

<% content_for :navbar do %>
      <%= render 'nav_bar_variation_one' %>
 <% end %>

<% content_for :navbar do %>
      <%= render 'nav_bar_variation_two' %>
 <% end %>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读