:layout => question

I’m looking at someone else’s code and I’m not sure what this does.

In a controller action for ‘show’ is the following:

render :layout => ‘edit’

Ok, there a layout for edit, basically it is the standard javascript includes, anti csfr stuff and ‘yield’.

Hmm, what’s it yielding to? Which template is it yielding to? There are both ‘edit.html.erb’ and ‘show.html.erb’ templates.



It would be yielding to whatever template the controller action would be using. In this case, that would be show.html.erb, since you're in the show action.


Controller => show.html.erb => edit.html.erb That's exactly it: edit.html.erb yields show.html.erb. Both the layout and the view are templates but the view goes into the layout.

The part that is (probably) causing you to think something's odd is that the view is actually processed first. The result and any 'content_for' sections have been saved before the layout is processed. The main result of the view is inserted where the `yield` is processed and the result of a `content_for :foo` will be inserted if there is a `yield :foo`.


Rob Biedenharn rob.biedenharn@gmail.com