我在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循环正在拾取以前构建的对象,并且还渲染那些 - 有人可以提出一种方法来阻止这种情况吗?
编辑:为了清楚起见,根据评论,这个帮助方法正在客户表单中使用;正在创建的功能是嵌套属性。