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?
They are opposite ends of the rendering process, with yield specifying where content goes, and content_for specifying what the actual content is.
Rails Guides describes partials this way: Partial templates - usually just called "partials" - are another device for breaking the rendering process into more manageable chunks. With a partial, you can move the code for rendering a particular piece of a response to its own file.
You can render the partial view in the parent view using the HTML helper methods: @html. Partial() , @html. RenderPartial() , and @html. RenderAction() .
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With