I have a _form partial shared by new and edit actions. I render the
partials like so:
    <%= render :partial => ''form'', :locals => { :f
=> f } %>
The partial looks (more or less) like this:
    <%= f.error_messages %>
    ...
    <table id="recipe_ingredients">
      <tr>
        <th>ingredient</th>
        <th>in units</th>
        <th>quantity</th>
        <th>delete?</th>
      </tr>
    <% f.fields_for :recipe_ingredients do |ri_f| %>
      <%= render :partial => ''recipe_ingredient'',
:locals => { :ri_f
=> ri_f } %>
    <% end %>
    </table>
    ....
As you can see, I''m rendering the _recipe_ingredient partial from the
_form partial, assigning the ri_f value to the :ri_f key. The partial
looks like this:
    <tr id="<%= "recipe_ingredient-#{ri_f.object.id
}"%>">
      <td>
        <%= ri_f.collection_select :ingredient_id,
Ingredient.all, :id, :name %>
      </td>
      <td>
        <%= ri_f.select :unit, RecipeIngredient::COOKING_UNITS %>
      </td>
      ....
    </tr>
Problem: when I call one of the actions, I get the following error:
    ActionView::TemplateError (undefined local variable or
    method `ri_f'' for #<ActionView::Base:0xb681ecbc>) on
    line #1 of app/views/recipes/_recipe_ingredient.html.erb:
    1: <tr id="<%= "recipe_ingredient-#{ri_f.object.id
}"%>">
    2:   <td>
    3:     <%= ri_f.collection_select :ingredient_id,
Ingredient.all, :id, :name %>
    4:   </td>
        app/views/recipes/_recipe_ingredient.html.erb:1
        app/views/recipes/_form.html.erb:21
        app/views/recipes/_form.html.erb:20
        app/views/recipes/new.html.erb:4
        app/views/recipes/new.html.erb:3
        app/controllers/recipes_controller.rb:30:in `new''
I have googled around but no luck so far... The syntax and all seems
ok, but it is refusing to work. If I move the code from the second
partial into the _form partial, it all works.
Any idea what I should correct?
--
Branko