Rails: Content_for in partial

Ximik picture Ximik · Feb 27, 2012 · Viewed 7.5k times · Source

I have something like this in my layout

...
<%= yield :test %>
...
<%= render :partial => 'user/bar' %>

And in user/bar.html.erb I have

<% content_for :test do %>
stuff
<% end %>

And this doesn't seem to work. And I have found out that yield :test executes before partial, but after executing the view of the action. Why does it do so and what can I do?

Answer

Baldrick picture Baldrick · Feb 27, 2012

The syntax content_for :test do ... end captures the content of the block, and content_for :test gives the captured block. doc for content_for.

In your code, the restitution is done before the capture, so it cannot work.