我在 application.rb 文件中创建了一个自定义助手,如下所示:
module ApplicationHelper
def add_feature_field(feature_type, object_form_builder, actions_visible)
object_form_builder.object.features.build
fields = object_form_builder.fields_for :features do |features_builder|
render :partial => "features/fixed_feature", :locals => {:feature => features_builder, :fixed_feature_type => feature_type, :form_actions_visible => actions_visible}
end
end
end
从我的角度来看,我这样称呼这个助手:
<%= add_feature_field("First Name", customer, false) %>
<%= add_feature_field("Last Name", customer, false) %>
<%= add_feature_field("Date of Birth", customer, false) %>
这几乎与预期的一样工作,除了一个主要障碍:第二次调用助手时,它呈现 2 个字段而不是单个字段,第三次呈现 3 个字段。
我假设正在发生的事情是我的助手中的 fields_for 循环正在拾取先前构建的对象,并渲染这些对象 - 任何人都可以提出一种防止这种情况的方法吗?
编辑:为清楚起见,根据评论,此帮助方法正在客户表单中使用;正在创建的要素是嵌套属性。