has_many ArticleAssets という記事があります。かなり単純です。記事の編集フォームで、新しい記事のアセットを追加したいだけです。現在のものを編集する必要はないので、次のようなパーシャルを作成しました。
<% f.fields_for :article_assets, article_asset do |builder| -%>
<div class="article_asset">
<%= builder.file_field :image %>
<%= builder.check_box :is_flagged, :class => "isFlagged" %> isFlagged
</div>
<% end -%>
一度に必要なオブジェクトは 1 つだけで、既存の記事アセットからのデータは必要ないため、コレクションはありません。edit.erb の形式で、次をレンダリングします。
<%= render :partial => 'article_asset', :locals => {:f => f}, :object => ArticleAsset.new %>
これにより、情報を追加できる 1 つの新しい記事アセットが表示されます。これまでのところすべてクールです。重要なのは、このフィールドがarticle[article_assets_attributes][0][is_flaged]の名前形式を取得することです。これにより、レールのチェックボックスが常に付いている隠しフィールドも残りのフィールドにグループ化されるため、すべて問題ありません。次に、これを行う「アイテムの追加」リンクがあります。
page.insert_html :bottom, :article_assets_fields, :partial => "article_asset", :locals => {:f => f}, :object => ArticleAsset.new
このリンクをクリックすると、作成されたフィールドの下に、期待どおり、 article[article_assets_attributes][1][is_flaged]のチェックボックス フィールドの名前形式を持つ新しいフィールドが表示されます。インクリメント、完璧です!ただし、同じリンクを使用して別のフォームを追加すると、同じフォーム (識別子も 1、重複) が生成されるため、フォームの送信には 3 つではなく 2 つのアイテムしかありません。それを解決しますか?
ルビーオンレール 2.3.11