ruby-on-rails – Rails 4Bootstrap 3:如何在不同的页面上显示不同的导航栏?

ruby-on-rails – Rails 4Bootstrap 3:如何在不同的页面上显示不同的导航栏?,第1张

概述这是我们的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 N 这是我们的Rails 4应用程序的_header.HTML.erb,使用bootstrap 3组件制作:

<header >  <div >    <nav>      <div >        <%= link_to "APP name",root_path,ID: "logo" %>      </div>      <div >        <ul >          <li><%= link_to "Features",features_path %></li>          <li><%= link_to "Pricing",pricing_path %></li>          <li><%= link_to "Blog",'#' %></li>        </ul>      </div>      <div >        <ul >          <% 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 %>
总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails 4 / Bootstrap 3:如何在不同的页面上显示不同的导航栏?全部内容,希望文章能够帮你解决ruby-on-rails – Rails 4 / Bootstrap 3:如何在不同的页面上显示不同的导航栏?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1244754.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存