は、だから私は、この構造を持つモデルがあります: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
シナリオの再現を試みるためにモデルを追加できますか? –
投稿に追加 – user1456632