Как загрузить изображение в статью Rails
Я перестраиваю блог в Rails и использую Trix для своего текстового редактора. У меня есть все, что касается Трикса. Я могу перетащить изображение и поместить его в текстовый редактор Trix, и когда я нажимаю "Создать статью", я не получаю ошибок. Но когда я иду, чтобы просмотреть статью, нет изображения. Это кажется очень легко исправить.
show.html.erb
<h1>Showing Blog Posts</h1>
<p>
<strong>Title:</strong>
<%= @article.title %>
</p>
<p>
<strong>Text:</strong>
<%= @article.text.html_safe %>
</p>
<%= link_to 'Back', articles_path %>
article_controller.rb
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def create
@article = Article.new(article_params)
if @article.save
redirect_to @article
else
render 'new'
end
end
def update
@article = Article.find(params[:id])
if @article.update(article_params)
redirect_to @article
else
render 'edit'
end
end
private
def article_params
params.require(:article).permit(:title, :text)
end
end
article.coffee (код для загрузки изображения в редактор Trix)
$ ->
document.addEventListener 'trix-attachment-add', (event) ->
attachment = event.attachment
if attachment.file
return sendFile(attachment)
return
document.addEventListener 'trix-attachment-remove', (event) ->
attachment = event.attachment
deleteFile attachment
sendFile = (attachment) ->
file = attachment.file
form = new FormData
form.append 'Content-Type', file.type
form.append 'image[image]', file
xhr = new XMLHttpRequest
xhr.open 'POST', '/images', true
xhr.upload.onprogress = (event) ->
progress = undefined
progress = event.loaded / event.total * 100
attachment.setUploadProgress progress
xhr.onload = ->
response = JSON.parse(@responseText)
attachment.setAttributes
url: response.url
image_id: response.image_id
href: response.url
xhr.send form
deleteFile = (n) ->
$.ajax
type: 'DELETE'
url: '/images/' + n.attachment.attributes.values.image_id
cache: false
contentType: false
processData: false
return