写真と製品の 2 つのモデルがあります。これらは has_many を介して関連付けられ、ネストされています。
製品コントローラーの「作成」アクションで、ユーザーがアップロードした、製品にリンクされていないすべての写真を関連付けます。(写真はajax経由で追加されるため、このようにします)。
今編集ページに。写真を追加したい。これには、写真を製品にリンクする必要があります。作成アクションでそれを行う前に。しかしご存知のように、Rails には実際の編集アクションはありません。このため、私の製品コントローラーには、2 つに参加する場所がありません。
それで、どうすればこれを回避できますか?
PS 私はあなたが尋ねる前にフォト コントローラーで 2 つに参加することはできません
製品コントローラ
def new
Photo.where(:product_id => nil, :user_id => current_user).delete_all
@product = Product.new
@photo = Photo.new
end
def create
binding.pry
@product = current_user.products.create(params[:product])
if @product.save
Photo.where(:product_id => nil, :user_id => current_user).update_all(:product_id => @product.id)
render "show", notice: "Product created!"
else
render "new", error: "Error submitting product"
end
end
def edit
@product = Product.find(params[:id])
@photo = Photo.new
end
フォトコントローラー
def create
@photo = Photo.new(params[:photo])
respond_to do |format|
@photo.user_id = current_user.id
if @photo.save
format.html {
render :json => [@photo.to_jq_image].to_json,
:content_type => 'text/html',
:layout => false
}
format.json { render json: {files: [@photo.to_jq_image]}, status: :created, location: @photo }
else
format.html { render action: "new" }
format.json { render json: @photo.errors, status: :unprocessable_entity }
end
end
end