如何将Froala Editor文件上传与Rails 4.2集成

时间:2015-10-21 00:29:07

标签: javascript ruby-on-rails-4.2 froala

在我的Rails 4.2应用程序中,我想使用Froala Editor上传大约20-50个文档(pdf/docx/rtf/txt)并将上传的文档保存在路径/public/media/documents中。我想将上传内容发布到/admin/media/documents#upload。理想情况下,当我点击编辑器中的文件上传按钮时,我还想从已上传的文档中进行选择。

在发生这种情况的表单上,我有一些像这样开始的javascript:

javascript:   $('#page_content').editable({
    imageUploadURL: '/admin/media/documents/',  /not sure about this
    inlineMode: false,
    theme: 'royal',
    // Set custom buttons with separator between them.
    buttons: ['html', 'sep', 'undo', 'redo', ...

有人可以帮我解决谜题中缺失的部分吗?

1 个答案:

答案 0 :(得分:3)

您需要添加

javascript:   $('#page_content').editable({
    imageUploadURL: '/admin/media/documents/',
    imageUploadMethod: 'POST'
}

以carrierwave为例:Carrierwave,您可能需要彻底阅读

将gem添加到Gem文件中

gem 'carrierwave'

然后

bundle install

通过carrierwave创建上传器模型

rails g uploader Image

看起来像这样:

-- app/model/uploader/image_uploader.rb
class ImageUploader < CarrierWave::Uploader::Base

    storage :file

    def store_dir
        "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end
end

它将在app / model / uploaders中生成image_uploader.rb

在您的文档模型中:

class document < ActiveRecord::Base
    mount_uploader :picture, ImageUploader
end

所以现在你需要为你的上传创建一条路线,从你的路径看起来像是&gt;

-- config/route.rb

resource :admin do
    resource :media do
      post 'documents' => 'documents#upload'
    end
end

在您的文档中,您需要实施上传操作,以节省时间和明确答案。我将跳过csrf token cerify。

class DocumentsController < ApplicationController
    skip_before_filter :verify_authenticity_token 

    ...
    # you need you adjust your code.
    def upload
        @document = admin.media.documents.new 
        @document.picture = params[:file]
        @document.save

        respond_to do |format|
            format.json { render :json => { status: 'OK', link: @document.picture.url}}
        end
    end
    ...
end

希望这能清楚地解释这个问题。