0

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ループが以前に作成されたオブジェクトを取得し、それらをレンダリングしていると思います-これを防ぐ方法を誰かが提案できますか?

編集:明確にするために、コメントに従って、このヘルパーメソッドは顧客フォーム内で使用されています。作成されるフィーチャはネストされた属性です。

4

0 に答える 0