Passing local to template to partial

I want to pass an array to a template as a local variable. The template passes the same local variable to a partial as a local variable. This isn't working as I expect and something in the back of my mind is says that I read something about this. Nothing shows up in the first three pages of my Google search and it's degenerating into Japanese train (rail) passes.

Help,   Jeffrey

Sample of the code that does not work as expected would help us help you.

Documentation on templates: http://api.rubyonrails.org/classes/ActionView/Base.html Documentation on partials: http://api.rubyonrails.com/classes/ActionView/Partials.html

Both documents show how to pass variables in.

-Michael

Quoting Michael Libby <michael.c.libby@gmail.com>:

> > I want to pass an array to a template as a local variable. The template > passes the same local variable to a partial as a local variable. This isn't > working as I expect and something in the back of my mind is says that I read > something about this. Nothing shows up in the first three pages of my Google > search and it's degenerating into Japanese train (rail) passes.

Sample of the code that does not work as expected would help us help you.

Documentation on templates: ActionView::Base Documentation on partials: Peak Obsession

Both documents show how to pass variables in.

But neither show passing locals to actions, e.g.

render :action => 'new', :locals => {:universe => 'abc'}

I have looked at a bunch of examples and none do this.

In fact, I think the first URL lists obsolete APIs. Where it reads:

render "shared/header", { :headline => "Welcome", :person => person }

I believe the correct API for recent versions of Rails (I'm using 2.1.2) is:

render "shared/header", :locals=>{:headline => "Welcome", :person => person}

I've changed to passing the needed information thru an instance variable to the action template and a local variable to the partial.

Thanks,   Jeffrey

Jeffrey L. Taylor wrote:

Quoting Michael Libby <michael.c.libby@gmail.com>:

Sample of the code that does not work as expected would help us help you.

Documentation on templates: ActionView::Base Documentation on partials: Peak Obsession

Both documents show how to pass variables in.

But neither show passing locals to actions, e.g.

render :action => 'new', :locals => {:universe => 'abc'}

I have looked at a bunch of examples and none do this.

In fact, I think the first URL lists obsolete APIs. Where it reads:

render "shared/header", { :headline => "Welcome", :person => person }

I believe the correct API for recent versions of Rails (I'm using 2.1.2) is:

render "shared/header", :locals=>{:headline => "Welcome", :person => person}

From my experiments, it appears passing locals to actions in unsupported. I've changed to passing the needed information thru an instance variable to the action template and a local variable to the partial.

Thanks,   Jeffrey

No, I don't think you can pass locals to render :action.

Try render :partial => 'shared/header', :locals => {...}

Note that the partial filename must be /views/shared/_header.html.erb

You can pass the variable to the action with an instance variable, and from there you can pass the instance variable to the partial, I would think.

def whatever   @locals => { :universe => 'abc' }   render :action => 'new' end

Hope that helps.

-- Josh http://iammrjoshua.com

Jeremy Weiskotten wrote: