content_for(name, &block) public

Content_for will store the given block in an instance variable for later use in another template or in the layout.

The name of the instance variable is content_for_<name> to stay consistent with @content_for_layout which is used by ActionView's layouts

Example:

  <% content_for("header") do %>
    alert('hello world')
  <% end %>

You can use @content_for_header anywhere in your templates.

NOTE: Beware that content_for is ignored in caches. So you shouldn’t use it for elements that are going to be fragment cached.

Show source
Register or log in to add new notes.
February 12, 2010
1 thank
November 26, 2009
0 thanks

How to check if a Yield has content?

How do I do this without actually calling the yield?

  - if yield :footer
    = yield :footer
  - else
    = render "layouts/footer_big"

(Note: HAML Syntax) Thanks.

November 30, 2009 - (>= v2.3.4)
0 thanks

Clearing out previous values from content_for

By default, content_for :thing appends whatever you put in your block to the previous value of :thing. In some cases, you’d like to clear out :thing rather than append to it.

I just posted a way to do this on my blog: http://stevechanin.blogspot.com/2009/11/clearing-out-content-in-contentfor.html

I add a new method set_content_for that works just like content_for, but clears out :thing first. It doesn’t touch how content_for works, so it shouldn’t cause any problems anywhere else in your app.