Вы можете поместить эту логику в свои таблицы стилей, в свой контроллер или в свои представления (это последнее, только для целых контроллеров).
Таблицы стилей
Если вы хотите добавить логику в свои таблицы стилей, сначала добавьте в тег body следующие классы:
<body class="<%= "#{controller.controller_name} #{controller.action_name}" %>">
Затем в вашем css добавьте что-то вроде этого:
body.controller.action .navbar {
display: none;
}
Контроллер
Чтобы добавить эту логику к вашему контроллеру, добавьте фильтр перед вашим контроллером приложения:
class ApplicationController < ActionController::Base
before_filter :show_navbar
protected
def show_navbar
@show_navbar = true
end
end
Затем, если вы не хотите показывать панель навигации в CarsController, сделайте следующее:
class CarsController < ApplicationController
skip_before_filter :show_navbar, only: [list, of, actions]
end
где [list, of, actions]
— это действия, в которых вы не хотите показывать панель навигации.
Наконец, измените макет, чтобы он выглядел так:
<% if @show_navbar -%>
<%= render 'layouts/header' %>
<% end -%
Просмотры
Если вы хотите отключить заголовок для целых контроллеров, сначала переместите заголовок в app/views/application/
и измените свой рендер на:
<%= render partial: 'header' %>
Наконец, в тех контроллерах без панели навигации добавьте пустую _header.html.erb
к app/views/controller_name
.
Чтобы этот вариант работал, вам нужен как минимум Rails 3.1.
person
Serabe
schedule
15.11.2012