Navbar появляется на домашней странице, но не на странице сообщений (новичок здесь) - PullRequest
0 голосов
/ 22 мая 2018

так что я новичок, пожалуйста, потерпите меня.

Я следую онлайн-курс, где инструктор показывает навигационную панель, появляющуюся в корневом пути домашней страницы, но также и на других страницах, таких как страница сообщений.Я точно следовал его инструкциям, но по какой-то причине частичная навигационная панель появляется только на главной странице, но НЕ на странице сообщений - код для навигационной панели следующий, а код для других страниц - на https://github.com/cheese1884/-mywebsite

Спасибо, ребята.

<div class='container'>
  <nav class="navbar navbar-expand-lg navbar-light bg-light">
    <%= link_to "LessonRoll", root_path, class: 'navbar-brand' %>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor03" aria-controls="navbarColor03" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navbarColor03">
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <%= link_to 'Home', root_path, class: 'nav-link' %>
        </li>
        <li class="nav-item">
          <%= link_to 'Posts', posts_path, class: 'nav-link' %>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Pricing</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">About</a>

        </li>
          <% if current_user %>
              <li class="nav-item dropdown">
              <a class = "nav-link dropdown-toggle" data-toggle="dropdown" href="#" id="download">Admin Menu<span class="caret"></span></a>
              <div class="dropdown-menu" aria-labelledby="download">
                <%= link_to "App Settings", app_setting_path(@app_setting), class: 'dropdown-item' %>
                <div class="dropdown-divider"></div>
              Link
              </div>
            </li>
            <% end %>
        </ul>



        <ul class="nav navbar-nav ml-auto">
          <% if !current_user %>
           <li class="nav-item">
              <%= link_to "Sign Up", new_user_registration_path, class: 'nav-link' %>
            </li>
             <li><%= link_to "Log In", new_user_session_path, class: 'nav-link' %>
            </li>
            <% else %>
           <li class="nav-item dropdown">
              <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" id="download"><%= current_user.username if current_user %> <span class="caret"></span></a>
              <div class="dropdown-menu" aria-labelledby="download">
                <%= link_to "Edit Profile", edit_user_registration_path, class: 'dropdown-item' %>
                <div class="dropdown-divider"></div>
                <%= link_to "Log Out", destroy_user_session_path, method: :delete, class: 'dropdown-item' %>
              </div>
            </li>
            <% end %>
          </ul>
    </div>
  </nav>
</div>

1 Ответ

0 голосов
/ 22 мая 2018

В вашем yeti.html.erb вам нужно поместить панель навигации вне секции yield:

<body>
  <%= render partial: 'navbar' %> <!-- or code for navbar -->
  <div>
    <%= yield %>
  </div>
</body>

Редактировать : объяснение нескольких макетов

Rails использует простое соглашение, чтобы найти правильный макет для вашего запроса.Если у вас есть контроллер с именем ProductsController, Rails увидит, есть ли макет для этого контроллера на layouts/products.html.erb.Если он не может найти макет, специфичный для вашего контроллера, он будет использовать макет по умолчанию в app/views/layouts/application.html.erb.( source )

В вашем случае вы можете добавить пользовательский макет, например yeti.html.erb, и указать свой PostsController для использования этого макета с layout 'yeti'

Почему панель навигации отображается на домашней странице, а не на странице публикации (оригинальный вопрос)

Поскольку, как я уже ответил выше, вам необходимо добавить частичку панели навигации внутри макета yeti.html.erb.как вы делали в макете application.html.erb.

Чем отличается дизайн панели навигации

Потому что в макете приложения вы связываете таблицу стилей application.scss, которая импортирует только загрузчик ( здесь )

<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>  

В макете yeti вы связываете yeti/theme_manifest.scss как таблицу стилей, которая импортирует как "начальную загрузку", так и переопределяющую "тему" ( здесь )

<%= stylesheet_link_tag 'yeti/theme_manifest', media: 'all', 'data-turbolinks-track': 'reload' %>

Надеюсь, это поможет вам увидеть более четко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...