Conditional layout - show

John Mcleod wrote:

I have two different layouts (standard page and dialog box) for a view (show). How do I set each layout in the controller to show the different layout?

I don't know exactly what you're trying to accomplish from the information you provided, but this approach doesn't "feel" right to me.

I would put the content of the page/dialog into a partial. I'm going to assume that your dialog version will be rendered by an AJAX call.

In that case I would use respond_to to determine which layout to render:

respond_to do |format|   format.html # Render page with default layout   format.js # Render the dialog version end

In case you're not rendering the "dialog" version with AJAX then you might want to use a custom MIME type to render the alternate layout:

respond_to do |format|   format.html # Render page with default layout   format.dlog # Render the dialog version as HTML using custom format type end

Where would I set the variable? in the show.html.erb?

I'm not sure how you will be determining which layout to use, but if you absolutely had to store this in a variable you would need an instance variable on your controller.

However, as I mentioned before moving the decision into the request seems like the better approach.

Robert Walker wrote:

I would put the content of the page/dialog into a partial. I'm going to assume that your dialog version will be rendered by an AJAX call.

On second thought the partial may not be necessary.