0

在我的 Rails 4.2 应用程序中,我想pdf/docx/rtf/txt使用 Froala Editor 上传大约 20-50 个文档 () 并将上传的文档保存在路径中/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', ...

有人可以帮我解决拼图中缺少的部分吗?

4

1 回答 1

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

所以现在你需要为你的上传创建一个路由,从你的路径来看,它可能看起来像 =>

-- 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

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

于 2015-11-25T20:15:00.763 回答