2017-06-05 9 views
1

は、だから私は、この構造を持つモデルがあります:Railsの5コレクションの下にネストfields_for

document { 
    structure { 
    id, 
    ... 
    }, 
    fields { 
    field { 
     id, 
     ... 
    }, 
    value { 
     ... 
    } 
    } 
} 

をそして私はフィールドは次のようになり、フィールド、一緒にフォームを置くしようとしている:

<%= document.fields.each_with_index do |df, i| %> 
    <%= f.fields_for "fields[]", df do |builder| %> 
     <p> 
     <%= builder.label df.field.name %> 
     <%= builder.fields_for :field do |field_builder| %> 
      <%= field_builder.hidden_field :id, value: df.field.id %> 
     <% end %> 

     <%= builder.fields_for :value do |value_builder| %> 
      <%= render df.field.edit_view, field: df.field, builder: value_builder %> 
     <% end %> 
     </p> 
    <% end %> 
    <% end %> 

しかし、結果のフィールド名は次のとおりです:

<input type="hidden" name="document[fields][0][field][id]" /> 
<input type="text" name="document[fields][0][value]" /> 

<input type="hidden" name="document[fields][1][field][id]" /> 
<input type="text" name="document[fields][1][value]" /> 

... 

これは私が現在やっているものです

document[fields][field][id] 
document[fields][value][value] 

つまり、インデックスが欠落しています。

<%= builder.hidden_field :id, value: df.field.id %>を使用すると、フィールド形式のオブジェクトにはまだIDがないため、正しい形式ではありません。document[fields][][id]しかし、複数のフィールドが含まれている可能性があるため、これは値のオプションではありません。

フォームヘルパーを使用してこれを行う方法はありますか、それとも私がやっているのはちょっとしたことですか?

編集:ここでは、関係するモデルです。

アイデアは、文書のフィールドの設定可能なセットを持っていることです。構造体は利用可能なフィールドを決定し、document_fieldはドキュメントと値が含まれるフィールドとの関係です。

class Field < ApplicationRecord 
    belongs_to :structure 
end 

class Document < ApplicationRecord 
    belongs_to :structure 
    has_many :document_fields 

class DocumentField < ApplicationRecord 
    belongs_to :document 
    belongs_to :field 

class Structure < ApplicationRecord 
    has_many :fields 
+1

シナリオの再現を試みるためにモデルを追加できますか? –

+0

投稿に追加 – user1456632

答えて

1

あなたは、nested attributes setup on your modelsを設定し、コントローラ上のものネストされた関係を構築し、参照記号を渡すform_forブロックの代わりにあなたの中にオブジェクトのインスタンスを作成する必要があります。

+0

これはdocument_field [field]では機能しますが、別のモデルではない値ではなく、任意の構造化データを含む単なるJSONオブジェクトです...どうすればaccepts_nested_attributes_forのようなものを使用できますか? – user1456632

関連する問題