2017-01-20 10 views
0

私のレールアプリケーションでは、KidモデルとAllergyモデルがあり、Kid has_many​​のモデルがあります。また、kidを作成するときにフィールドがkidフォームになるようにネストされたフォームを作成しました。これは私が私のkidコントローラに持っているものです。ネストされたフォームのフィールドが空でない場合は、レコードは保存されません

def new 
    @kid = Kid.new 
    allergy = @kid.allergies.build 
end 

、これが私のkidフォームを作成するにネストされた私のindex.html.erbである:

<%= f.fields_for :allergies, Allergy.new do |u| %> 
    <%= u.label :description, "Description", class: "control-label" %>  
    <%= u.text_field :description, class: "input-sm form-control" %> 
    <%= u.label :symptoms, "Symptoms", class: "control-label", %>  
    <%= u.text_field :symptoms, class: "input-sm form-control" %> 
<%end%> 

これはほんの一allergyレコードを挿入するため正常に動作しますAllergyモデルに入力することができますが、kidが可変量のallergiesを持つ可能性があるため、最大5個のallergy個の入力をリストし、ユーザーが入力するものだけを挿入することができます。

私はこの記事を使用:http://vicfriedman.github.io/blog/2015/07/18/create-multiple-objects-from-single-form-in-rails/

しかし、私は、ネストされたフォームにこの作業を行うことができませんでした。すべての助けがありがとう、ありがとう!その後、データベース内の任意の空の関係を保存拒否すること

def new 
    @kid = Kid.new 
    5.times do 
     @kid.allergies.build 
    end 
end 

:あなたは、フォームに表示する関連アイテムの数、のようなものを構築する必要がありますあなたの関係のために複数のネストされたフォームを取得するための

+0

':reject_if'を試しましたか? http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html –

答えて

0

モデルでは、次のようなものを使用できます:

accepts_nested_attributes_for :allergies, reject_if: ->(allergy){ allergy['description'].blank? && allergy['symptoms'].blank? } 
+0

これは完璧に動作します、ありがとう! –

関連する問題