2016-05-24 9 views
3

1つの新しい子オブジェクトと1つの親オブジェクトを編集するフォームが必要です(多くの関係があります)。 @child = @parent.children.newでコントローラに新しい子を作成すると、次のように動作しますが、の入力フィールドがすべての子を表示します。複数の親を更新して*単一*子オブジェクトを作成するためのネストされたフォーム

<%= simple_form_for @parent do |p| %> 
    <%= p.input :parent_attribute %> 
    <%= p.simple_fields_for :children do |c| %> 
    <%= c.input :child_attribute %> 
    <% end %> 
<% end %> 

フォーム入力フィールドは、作成した1つの新しい子のみに表示するにはどうすればよいですか?

答えて

1

あなたが親フォーム内の新しいシングルの子フォームを表示したい場合は、あなたがこれを行うことができます:あなたは子供のモデル名だけでなく、子モデルオブジェクトの両方を指定する必要が

<%= simple_form_for @parent do |p| %> 
    <%= p.input :parent_attribute %> 
    <%= p.simple_fields_for :child, @child do |c| %> 
    <%= c.input :child_attribute %> 
    <% end %> 
<% end %> 

注意simple_fields_for(またはfields_for)を使用して、特定のモデルオブジェクトを参照します。

あなただけの新しいシングルの子フォームを表示したい場合は、あなたがこれを行うことができます:

<%= m.simple_form_for @child do |c| %> 
    <%= c.input :child_attribute %> 
<% end %> 

これが唯一の新しい子レコードのフォームを作成します。

+0

hell yeah!とてもスムーズに動作します。ありがとう! –

+0

元のコードに誤ってm.simple_fields_forがありました。 p.simple_fields_forとp.simple_form_forである必要があります。私は私のところで修正しましたが、あなたのコピー/ペーストで修正することはできません。多分あなたが秒を持っているときにそれを編集してください。 –

+0

@TimKoelkebeck私はそれを修正しました。私はあなたのオリジナルからそれをコピーしたときに気づいていなかった。それはすべてあなたのために働いてうれしい。楽しい! –

関連する問題