我使用carrierwave 和fog 上传到Amazon S3。这是它的样子,我会跳过雾部分,你可能需要做一些调整。然而,这个概念很简单。
我使用了 angularJS,但 jquery 选项应该是这样的。您需要使用 POST 方法定义上传路线
的JavaScript:
<script>
$(function() {
$('.selector').froalaEditor({
// Set the image upload URL.
imageUploadURL: '/attachment/upload.json',
imageUploadMethod: 'POST'
})
}
</script>
然后你需要实现 /attachment/upload.json。
在 Rails 中
-- attachment.rb
class Attachment < ActiveRecord::Base
mount_uploader :picture, PictureUploader
end
因为它是 ajax 调用,所以您需要在提交时在控制器中处理 CSRF 令牌验证。这个例子将跳过验证:所以在你的控制器中添加 skip_before_filter :verify_authenticity_token 。如果您不想跳过验证。您需要在 Froala 初始化中使用 imageUploadParams 传递参数:{'authenticity_token': your csrf token}。所以让我们回顾一下rails部分。
-- attachments_controller.rb
class AttachmentsController < ApplicationController
skip_before_filter :verify_authenticity_token
...
def upload
# The Model: Attachment, created below.
@attachment = Attachment.new
@attachment.picture = params[:file]
@attachment.save
respond_to do |format|
format.json { render :json => { status: 'OK', link: @attachment.picture.url}}
end
end
...
end
使用 rails 生成 PictureUploader 并在控制台中创建模型
rails generate uploader Picture
rails g model attachment picture:string
rake db:migrate
在你的 route.rb 中,设置到你的控制器的路由#method
post 'attachment/upload' => 'attachments#upload'
因此,您将通过 POST 获得路由 /attachment/upload,它调用 attachment#upload。希望能帮助到你!如果有什么让您感到困惑,请告诉我。