Rapture
Rapture

Reputation: 1896

Writing a helper method for page headers

I am currently integrating twitter bootstrap.

My application layout currently includes my flash messages right above the yield:

    <div class="container">

            <%= render 'layouts/header' %>

            <div class="content" role="main">
                <%= render :partial => 'shared/flash', :object => flash %>
                <%= yield %>
            </div>

            <%= render 'layouts/footer' %>


    </div> <!--! end of #container -->

However, I am also using the bootstrap Page Headers in my individual views

    <div class="page-header">
        <h1>Sign In <small>through one of these services:</small></h1>
    </div>

I would like my flash messages to be below these page headers when page headers are set. So I'm thinking the best way to do this is to create a helper method and edit my application layout to be something like:

        <%= render 'layouts/header' %>

        <div class="content" role="main">
            <%= pageHeader %>
            <%= render :partial => 'shared/flash', :object => flash %>
            <%= yield %>
        </div>

How would I go about writing the helper for this. Would the best way to just have instance variables for @page_header and @page_header_small in my controller? Or is there a better rails way to handle this situation?

Upvotes: 0

Views: 987

Answers (1)

Johny
Johny

Reputation: 1441

You can user content_for combined with yield.

In your layout you can put this block with headline above flash message

<%= yield :page_header %>
<%= render :partial => 'shared/flash', :object => flash %>
<%= yield %>

and in your template for action

<% content_for :page_header do %>
  <div class="page-header">
    <h1>Sign In <small>through one of these services:</small></h1>
  </div>
<% end %>

Check it out at Ruby Guides

Upvotes: 3

Related Questions