Question

I render a partial like so:

<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %>

So inside of _some_partial.html.erb I render two more partials like so:

<% #foo.nil? #=> false %>
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %>
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>`

The foo local variable renders fine in some_partial.html.erb and even in another_partial_again.html.erb. However, the foo variable is inaccessible in another_partial.html.erb even though I explicitly passed it in the render call.

What is happening here?

Thanks for the help.

Was it helpful?

Solution 2

Solved. Turns out I was also rendering the same partial from the controller without sending the proper local variables. Thanks anyways!!!

OTHER TIPS

I had the undefined local variable or method error come up for me too when I was rendering a partial with :locals defined.

However, I had a different issue causing my problem, so I thought I would share my solution in case it helps anyone else. (This page was the first result when I googled this error after all)

Basically just make sure you use :partial => 'path/to/partial' in your call to render.

I.e.

<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %>

NOT like I was doing:

<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %>

Easy for a rails/ruby newbie like me to miss.

Bumped into this very old question cause I faced the same issue. Turned out that with Rails 4+ if you are not using collections or layout the correct way is:

# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>

As documented here.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top