Rails 3 - 无法以递归方式将局部变量传递给局部变量

时间:2013-05-07 19:05:21

标签: ruby-on-rails recursion partial

++编辑以更改问题以部分递归地调用++

在这段简单的代码无效之后,经过很多天的挫折之后,我正在写这个问题。我已经阅读了很多关于在stackoverflow上传递部分的问题,并尝试了所有我能做到的解决方案,但它不起作用。 调用第一个循环的部分工作,但从第二个循环开始,它会发生错误 “ #<#:0x2f12670> ”的未定义局部变量或方法`count' 请注意,错误包含一个类中的类,因此在递归调用partial时会发生一些可疑的事情。

我有一个名为_form.html.erb的部分调用另一个部分_rule_action_fields.html.erb。我需要将一个变量从表单partial传递给rule_action_field partial,这里是代码:

_form.html.erb :(请注意,此处的构建器对象是从未粘贴的代码传递的)

<% @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>

不幸的是,由于某些逻辑部分位于调用代码中,部分位于rule_action_fields partial中,因此我无法使用rule_actions集合调用此部分内容。

我尝试过的其他语法:

<%= 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  %>

有什么想法吗?

0 个答案:

没有答案