how to render partial on everything except a certain action

Nick Ginanto picture Nick Ginanto · Nov 15, 2012 · Viewed 12.6k times · Source

I have a _header.html.erb partial which is where I put my navbar

on my launch page I don't want to display the navbar.

this is the body of application.html.erb

<body>
<%= render 'layouts/header' %>
<div id="container">
    <%= yield %>
</div>

</body>

How do I render it on every action except specific actions on specific controllers?

Answer

Damien Roche picture Damien Roche · Nov 15, 2012

Replace your render with this:

<%= render 'layouts/header' unless @disable_nav %>

Then you can simply set disable_nav to true in any controller action you like:

def landing_page
  @disable_nav = true
end

As a before_filter, which I'd encourage over the above:

application_controller.rb

def disable_nav
  @disable_nav = true
end

my_controller

before_filter :disable_nav, only: [:landing_page]