在我的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', ...
有人可以帮我解决谜题中缺失的部分吗?
答案 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
希望这能清楚地解释这个问题。