简体   繁体   中英

Removing header rendering in specific rails .html.erb file

I'm rendering a header universally across my application in layouts/application.html.erb.

I'd like to make the header not appear in a specific foo.html.erb file.

What's the syntax for un-rendering a universal layout?

EDIT:

The controller for the layout is a devise controller, specifically Sessions Controller.

in your controller you can set the layout to false (or another layout), if false then you need all of the html,head,body tags in your view file

class BarController < ApplicationController
  def foo
    render :layout => false # render foo.html.erb with no layout
  end 
end

see section 2.2.11.2 from the rails guides: http://guides.rubyonrails.org/layouts_and_rendering.html

EDIT: including devise layout overrides

in config/initializers/devise.rb

Devise::SessionsController.layout "bar"
Devise::RegistrationsController.layout "foo"
Devise::ConfirmationsController.layout false # never tried this, guessing it would work
Devise::UnlocksController.layout "bar"
Devise::PasswordsController.layout "foo"

also see the wiki post - https://github.com/plataformatec/devise/wiki/How-To:-Create-custom-layouts has at least one other way

Let's say the controller and action that renders the template foo.html.erb is 'things#foo' and the path to this action is things_path. You can wrap the header in conditional tags as follows

<% unless request.path == things_path %>
<% end %>

. There are several ways to achieve this, but here is one.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM