4

我一直在努力让 Froala 完全使用我的导轨设置。我有一种类似博客的应用程序,其中包含与每个帖子相关联的帖子和图像。

class Post < ActiveRecord::Base
has_many :images
accepts_nested_attributes_for :images

class Image < ActiveRecord::Base
belongs_to :post
mount_uploader :image, ImageUploader

我试图弄清楚如何让这个与 Froala 一起工作。我可以在 Froala 配置中设置上传 URL,但我不知道应该是什么。

<script>
  $(function() {
    $('.selector').froalaEditor({
      // Set the image upload URL.
      imageUploadURL: '????',

      imageUploadParams: {
        id: 'my_editor'
      }
    })
  });
</script>

我整天都在研究这个,并尝试了我能想到的一切。任何帮助将不胜感激。谢谢你。

4

2 回答 2

6

我使用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。希望能帮助到你!如果有什么让您感到困惑,请告诉我。

于 2015-11-25T19:13:59.450 回答
1

哦,好吧,假设您在 froala & rails 4 中与我陷入同样的​​陷阱。我建议您应该正确阅读 CarrierWave 文档

GitHub Carrierwave 响应

嗯,如果你正在寻找一个更详细的例子,我想出了这个。这是相当不错的IMO

允许使用 CarrierWave 上传文件

快乐编码

于 2015-11-07T18:05:59.950 回答