4

Banana モデルと Image モデルの間に 1 対多の関連付けがあります。

さらに、各 Banana と Image は User に属します (Image とその Banana は異なる User を持つ可能性があるため、個別の関連付けを介して)。

イメージと同様にバナナを作成するためのネストされたフォームが必要です。キッカーは、構築するイメージの数がわからないことです (複数の属性に注意してください)。以下のフォームのコメントアウトされたビットは、適切な量の画像を作成しますが、関連するユーザー参照を完成しません。私が試みたように、fields_forでこれを達成する方法はありますか(したがって、関連付けが完了します)?

バナナモデル

class Banana < ActiveRecord::Base
  belongs_to :user
  validates_presence_of :user

  has_many :images, dependent: :destroy
  accepts_nested_attributes_for :images
  validates_associated :images
end

画像モデル

class Image < ActiveRecord::Base
  belongs_to :user
  validates_presence_of :user

  belongs_to :banana
  validates_presence_of :banana

  has_attached_file :img
end

<%= form_for @banana, :validate => true, :html => { :multipart => true } do |f| %>
<!--    <input type="file" name="banana[images_attributes][][img]" multiple />-->
    <%= f.fields_for 'images_attributes[]', @banana.images do |builder| %>
        <%= builder.file_field :img, multiple: true %>
    <% end %>
<% end %>

コントローラ

class BananasController < ApplicationController
  def create
    @banana = current_user.bananas.build(banana_params)
    render :new unless @banana.save
  end

  def new
    @banana = Banana.new
  end

  private

  def banana_params
    params.required(:banana).permit(images_attributes: [:img])
  end
end
4

1 に答える 1

2

ロール内のペーパークリップを使用した複数のアップロード

この答えをチェックしてください!

写真をアップロードするにはペーパークリップを使用し、複数のアップロードにはnested_formを使用できます。上記の質問は、これらすべてを接続するのに役立ちます。それでもできない場合は、私に書いてください。私はちょうどその問題を解決しています。

于 2013-09-20T16:36:17.170 に答える