ブログアプリを構築しようとしており、私はtrixテキストエディタとCarrierWaveを使用しています。今保存する前にRailsモデルを関連付ける方法
#blog_images_controller.rb:
def create
@image = BlogImage.create(image_params)
@image.image = params[:image]
respond_to do |format|
if @image.save
format.json { render :json => { url: @image.image.url } }
end
end
end
private
def image_params
params.require(:image).permit(:image)
end
#blog_images.coffee:
(->
host = undefined
uploadAttachment = undefined
document.addEventListener 'trix-attachment-add', (event) ->
attachment = undefined
attachment = event.attachment
if attachment.file
return uploadAttachment(attachment)
return
host = '/blog_images'
uploadAttachment = (attachment) ->
file = undefined
form = undefined
xhr = undefined
file = attachment.file
form = new FormData
form.append 'Content-Type', file.type
form.append 'image[image]', file
xhr = new XMLHttpRequest
xhr.open 'POST', host, true
xhr.upload.onprogress = (event) ->
progress = undefined
progress = event.loaded/event.total * 100
attachment.setUploadProgress progress
xhr.onload = ->
href = undefined
url = undefined
url = href = JSON.parse(@responseText).url
attachment.setAttributes
url: url
href: href
xhr.send form
return
).call this
私の問題:
トリップエディタでは、テキストエリアに画像をドラッグすると、私は次のコードを使用して、独自のBlogImagesコントローラとモデルの画像を掲載することにより、作業画像のアップロードを得ることができたことができます私は保存されたBlogImageを持っているが、彼らに関連付ける必要のあるブログはまだ作成されていないので、この関連付けを設定することはできません。私はRailsにはかなり新しいので、どんな指針も素晴らしいだろう。
あなたは、ネストされたフォームを見てみる必要があります。 html#nested-forms メインモデルを保存する前に関連モデルを作成しないでください。誰かが数十枚の画像をアップロードし、ブログフォームを提出しないことを選択するとどうなりますか?あなたはジャンクイメージモデルが残されます。 –