:layout => question

18 views
Skip to first unread message

jmcguckin

unread,
Sep 11, 2013, 7:00:18 PM9/11/13
to rubyonra...@googlegroups.com
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.

Thanks,

Joe

Jordon Bedwell

unread,
Sep 11, 2013, 7:06:37 PM9/11/13
to rubyonra...@googlegroups.com
On Wed, Sep 11, 2013 at 6:00 PM, jmcguckin <mcgu...@gmail.com> wrote:
> 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.

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.

Dave Aronson

unread,
Sep 11, 2013, 7:06:05 PM9/11/13
to rubyonrails-talk
On Wed, Sep 11, 2013 at 7:00 PM, jmcguckin <mcgu...@gmail.com> wrote:

> 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.

-Dave

--
Dave Aronson, the T. Rex of Codosaurus LLC,
secret-cleared freelance software developer
taking contracts in or near NoVa or remote.
See information at http://www.Codosaur.us/.

Rob Biedenharn

unread,
Sep 11, 2013, 7:30:15 PM9/11/13
to rubyonra...@googlegroups.com
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

Rob Biedenharn
rob.bie...@gmail.com


Reply all
Reply to author
Forward
0 new messages