В вашем 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' %>
Надеюсь, это поможет вам увидеть более четко.