1

++ edited to change the question to call partial recursively ++

I am writing this question after a lot of days of frustration about this simple piece of code which isn't working. I have read numerous issues with passing partials on stackoverflow and tried all the solutions I could but it doesn't work. Calling the partial works for the first loop but from second onwards it bombs with an error "undefined local variable or method `count' for #<#:0x2f12670>" Notice here that the error contains a class within a class, so something fishy is happening when the partial is being called recursively.

I have a partial called _form.html.erb which calls another partial _rule_action_fields.html.erb. I need to pass a variable from the form partial to the rule_action_field partial and here is the code:

_form.html.erb: (Please note that the builder object here is being passed from code I have not pasted)

<% @folder_count = 1  %>
<% @rule.rule_actions.each do |ruleaction| %>
    <%= f.fields_for :rule_actions, ruleaction do |builder| %>
        <%= render( :partial => 'rule_action_fields', :locals => { :f => builder, :count => @folder_count } ) %>
    <% end %>
    <% @folder_count = @folder_count + 1 %>
<% end %>

_rule_action_fields.html.erb

<p id="folder_fields">
  <%= count %>
  <label class="form_label">Move the files to </label>
  <%= f.select(:folder_id, current_user.folders.collect { |p| [p.name,p.id] }, {:include_blank => true } )  %>
</p>

Unfortunately I cant call this partial with a collection of rule_actions because of some logic which is partially in the calling code and partially in the rule_action_fields partial.

Other syntax I have tried:

<%= render :partial => 'rule_action_fields',:f => builder, :locals => { :count => folder_count }  %>
<%= render :partial => 'rule_action_fields', locals => { :count => folder_count }  %>
<%= render 'rule_action_fields', :count => folder_count  %>

Any ideas?

4

0 回答 0