Установите контейнер bootstrap для каждого представления, кроме одного в Rails - PullRequest
0 голосов
/ 26 мая 2020

Я создаю приложение Rails, и я хотел бы использовать контейнер bootstrap для каждого представления, кроме одного, домашней страницы. В идеале я бы поместил yield в application. html .erb внутри контейнера, чтобы он включал все представления, но это также должно было бы включать домашнюю страницу. Есть ли простой способ исключить только домашнюю страницу?

application. html .erb

<body>
  <div class="container">
    <%= yield %>
  </div>
</body>

Ответы [ 2 ]

5 голосов
/ 26 мая 2020

Вы можете создать дополнительный макет в своем каталоге app/views/layouts/. Затем используйте этот макет для нужного вам действия.

class YourController < ApplicationController 
  layout "your_new_layout", only: :your_action
  ...
end

Дополнительную информацию см. В документации по Ruby в Rails Guide .

0 голосов
/ 26 мая 2020

Вы можете создать отдельный макет, как указано выше, или просто добавить оператор if в представление, которое исключает контроллер и действие, например:

<% unless params[:controller] == "pages" && params[:action] == "home" %>
<div class="container">
<% end %>

У вас всегда есть доступ к контроллеру и действию через параметры. Не забудьте также сделать это для конечного div.

Я предпочитаю это, если это всего лишь небольшое изменение фактического макета, но другой макет имеет больше смысла, если есть много изменений.

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