Announcement (2017-05-07): www.ruby-forum.com is now read-only since I
unfortunately do not have the time to support and maintain the forum any
more. Please see rubyonrails.org/community and ruby-lang.org/en/community
for other Rails- und Ruby-related community platforms.

I am setting an action variable in my PagesController such as:
def manage
render(:layout => "admin")
@strOut = "STRING Variable Set From The MANAGE Action!"
end
And in the /views/pages/manage.rhtml view, I don?t have access to that
@strOut variable by trying to call it as: <%= @strOut %>
However, I am setting the same variable in another action in the
controller
such as:
def view
@strOut = "STRING Variable Set From The EDIT Action!"
end
... and I have full access to it in /views/pages/view.rhtml
The only difference in the actions being this:
render(:layout => "admin") ...in the manage action.
So, I want the manage action to use /views/layouts/admin.rhtml, and the
edit
action to use /views/layouts/pages.rhtml.
I'm not sure if the layouts have anything to do with it but I really
don't
know why that variable cannot be called from the view.
--
Jeff

It's an order thing.
render :layout => 'admin' actually copies the instance variables from
the controller for use in the template. It's actually a bit more
complicated than that but that's the just. In otherwards, at the time
the instance variables are copied to the template, your instance
variable @strOut does not exist and is not copied. Just code your
method like:
def manage
@strOut = "BLAH"
render :action => 'admin'
end
and all should be good.
-Matt

On May 10, 2006, at 10:31 AM, Jeff Ward wrote:
> I am setting an action variable in my PagesController such as:>> def manage> render(:layout => "admin")> @strOut = "STRING Variable Set From The MANAGE Action!"> end>> And in the /views/pages/manage.rhtml view, I don?t have access to that> @strOut variable by trying to call it as: <%= @strOut %>
You set the variable after the view was rendered. Swap those two lines.
jeremy