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) %>
これは、1つの大きなハードルを除いて、ほぼ予想どおりに機能しています。2回目にヘルパーが呼び出されると、1つのフィールドではなく2つのフィールドがレンダリングされ、3回目には3つのフィールドがレンダリングされます。
何が起こっているのかというと、ヘルパーのfields_forループが以前に作成されたオブジェクトを取得し、それらをレンダリングしていると思います-これを防ぐ方法を誰かが提案できますか?
編集:明確にするために、コメントに従って、このヘルパーメソッドは顧客フォーム内で使用されています。作成されるフィーチャはネストされた属性です。