如何在导航应用中的每个页面上显示导航栏?

时间:2014-08-27 22:22:14

标签: ruby-on-rails ruby

我目前在index.htm.erb文件中有导航栏。它目前仅在主页上显示。 我想知道为了让导航栏出现在我的应用程序的每个页面上,必须采取哪些必要步骤?

导航栏的代码如下所示:

<header class="navbar  navbar-inverse">
<div class="navbar-class">
<div class="container">


<!-- Collect the nav links, forms, and other content for toggling -->

  <ul class="nav navbar-nav">
  <li class="active"><a href="#">HOME</a></li>
  <li><%=link_to "ABOUT", about_us_path%></li>
  <li><%=link_to "OUR SERVICES", our_services_path %></li>
  <li><%=link_to "RATES", rates_path %></li>
  <li><%=link_to'CAREERS', careers_path%></li>
  <li><a href="#">TRAINING</a></li>
  <li><%= link_to"GALLERY", gallery_path %></li>
  <li><%=link_to"MEDIA", media_path%></li>
  <li><%=link_to"FAQS", faq_path %></li>
  <li><a href="#">CONTACT</a></li>
  </ul>


  </div>
  
 </div>
 </header>

非常感谢任何输入。

由于

3 个答案:

答案 0 :(得分:16)

如果你去app / views / layouts / application.html.erb,你会看到如下内容:

<!DOCTYPE html>
<html>
<head>
  <title>SampleApp</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

这是展示应用的每个页面的模板。这是您要放置导航栏的位置。您可以直接剪切并粘贴到此文件,也可以将其渲染为部分文件。

要将其呈现为部分,请将导航栏代码保存在同一目录中,并根据需要为其命名,但请确保将其另存为&#34; .html.erb&#34;它以下划线开头。例如:&#34; _navbar.html.erb&#34;。

下划线让Rails知道它是部分的,&#34; .html.erb&#34;告诉Rails使用什么预处理器。

将其保存为&#34; app / views / layouts / _navbar.html.erb&#34;,将其呈现在&#34; application.html.erb&#34;:

...
<body>
<%= render "layouts/navbar" %>
<%= yield %>

</body>
...

它应该出现在每一页上。

答案 1 :(得分:8)

您需要将其从index.html.erb中移除并将其放入layouts/application.html.erb

然后,每个响应将首先使用应用程序布局,并根据控制器的请求yield来自特定show / index视图的内容。

看起来应该是这样的:

<!DOCTYPE html>
<html>
  <head>
    <title>SspPrototype</title>
    <%= stylesheet_link_tag    'application' %>
    <%= javascript_include_tag 'application' %>
    <%= csrf_meta_tags %>
  </head>
<body>
  <p class="notice"><%= notice %></p>
  <p class="alert"><%= alert %></p>

  <header class="navbar  navbar-inverse">
    <div class="navbar-class">
      <div class="container">


      <!-- Collect the nav links, forms, and other content for toggling -->

        <ul class="nav navbar-nav">
          <li class="active"><a href="#">HOME</a></li>
          <li><%=link_to "ABOUT", about_us_path%></li>
          <li><%=link_to "OUR SERVICES", our_services_path %></li>
          <li><%=link_to "RATES", rates_path %></li>
          <li><%=link_to'CAREERS', careers_path%></li>
          <li><a href="#">TRAINING</a></li>
          <li><%= link_to"GALLERY", gallery_path %></li>
          <li><%=link_to"MEDIA", media_path%></li>
          <li><%=link_to"FAQS", faq_path %></li>
          <li><a href="#">CONTACT</a></li>
        </ul>


      </div>
    </div>
  </header>
<%= yield %>

</body>
</html>

以下是一些概述指南:

http://guides.rubyonrails.org/layouts_and_rendering.html#structuring-layouts http://railsapps.github.io/rails-default-application-layout.html

答案 2 :(得分:0)

在 app/views 中创建一个共享文件夹。在文件夹 (app/views/shared) 中,您创建了一个名为 _navbar.html.erb 的部分。 在部分中,复制导航栏的代码。

然后,您需要在 views/layouts/application.html.erb 中通过在 <%=yield%>: <%= render "shared/navbar" %>

上方编写导航栏

您也可以使用 _footer.html.erb 来做到这一点(将它放在 <%= yield %> 下方)

相关问题