undefined local variable or method?

I have:
<%= form_for(@supplier) do |f| %>
.......
......
<%= render 'sector_categories', :locals => {:f => f} %>

in _sector_categories partial I have:

<div class="field">
  <div id="category_update">
    <% for category in @categories %>
      <%= f.check_box :category_ids[], category.id,
@supplier.categories.include?(category) %>
      <%= category.name %><br />
    <% end %>
  </div>
</div>

Why it says: undefined local variable or method "f"?

Quoting Mauro <mrsanna1@gmail.com>:

I have:
<%= form_for(@supplier) do |f| %>
.......
......
<%= render 'sector_categories', :locals => {:f => f} %>

in _sector_categories partial I have:

<div class="field">
  <div id="category_update">
    <% for category in @categories %>
      <%= f.check_box :category_ids[], category.id,
@supplier.categories.include?(category) %>
      <%= category.name %><br />
    <% end %>
  </div>
</div>

Why it says: undefined local variable or method "f"?

As written, you are rendering a template, not a partial. Passing local
variables to templates is not supported. Do you mean

<%= render :partial => 'sector_categories', :locals => {:f => f} %>

HTH,
  Jeffrey

But if I create a new application using scaffold I see a code like
this: <%= render 'form' %> and a file _form.html.rb.
So it is a partial but the render command doesn't have :partial.
What's correct?

As you see in http://guides.rubyonrails.org/layouts_and_rendering.html
there is no need to specify :partial.

Quoting Mauro <mrsanna1@gmail.com>:

Quoting Mauro <mrsanna1@gmail.com>:

> Quoting Mauro <mrsanna1@gmail.com>:
>> I have:
>> <%= form_for(@supplier) do |f| %>
>> .......
>> ......
>> <%= render 'sector_categories', :locals => {:f => f} %>
>>
>> in _sector_categories partial I have:
>>
>> <div class="field">
>> <div id="category_update">
>> <% for category in @categories %>
>> <%= f.check_box :category_ids[], category.id,
>> @supplier.categories.include?(category) %>
>> <%= category.name %><br />
>> <% end %>
>> </div>
>> </div>
>>
>> Why it says: undefined local variable or method "f"?
>>
>
> As written, you are rendering a template, not a partial. Passing local
> variables to templates is not supported. Do you mean
>
> <%= render :partial => 'sector_categories', :locals => {:f => f} %>

As you see in http://guides.rubyonrails.org/layouts_and_rendering.html
there is no need to specify :partial.

Look again. Every example on that page with :locals, explicitly specifies
:partial.

Your way isn't working. How about trying something different. The only way
you will find out if the Rails 2 convention, locals only for partials, is or
isn't true in Rails 3 is trying it. You have shown that without :partial and
possibly some other factor, locals don't work. Change only one thing and run
the experiment again.

Jeffrey

You are right, so I've have notice that with rails 3 there is no need
to specify :partial unless I use local variables.