2015-10-21 2 views
0

В приложении Rails 4.2 я хотел бы загрузить около 20-50 документов (pdf/docx/rtf/txt) с помощью редактора Froala и сохранить загруженные документы по пути /public/media/documents. Я хочу опубликовать загрузку до /admin/media/documents#upload. В идеале я также хочу выбрать из документов, которые уже были загружены, когда я нажимаю кнопку «Загрузить файл» в редакторе.Как интегрировать редактор Froala Загрузка файла с помощью Rails 4.2

На форме, где это происходит, у меня есть некоторые 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', ... 

Может кто-то пожалуйста, помогите мне с недостающими кусочками в головоломке?

ответ

3

Вам нужно будет добавить

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

тейк carrierwave в качестве примера: Carrierwave, вы, вероятно, нужно прочитать его тщательно

Добавить камень в файл 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 

Он будет генерировать 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 

Надеюсь, это объясняет вопрос четко.

+1

вы можете обратиться: [gist] (https://gist.github.com/qqnc/c4417aefe120374c8271) –