2013-08-23 1 views
1

Я пытаюсь настроить Rails 4 с помощью редактора HTML-кода NicEdit. Итак, я загрузил nicEdit-latest.js и правильно настроил его с помощью своего приложения rails. Все работает отлично, за исключением загрузки изображений на собственный сервер.Rails 4, NiceEdit, Carrierwave. Что я должен возвращать при загрузке?

Я изменил URL загрузки в nicEdit-latest.js в

{nicURI:"http://myserver.com:3000/upload/get_image",...} 

Затем я создал контроллер загрузки с ПОЛУЧИТЬ IMAGE_ACTION.

class UploadController < ApplicationController 
protect_from_forgery with: :null_session #without it controller rises an error 

    def get_image 
    picture = Picture.new 
    picture.image = params[:image] 
    picture.save 
    render :text => picture.image.url #? 
    end 

end 

Я сконфигурировал драгоценный камень несущей и создал модель для хранения изображений.

class Picture < ActiveRecord::Base 
    mount_uploader :image,PictureUploader 
end 

Я пытался играть в консоли, используя монтировку драгоценный камень, и успешно сохранен загруженный файл с помощью кода, как

picture.image = params[:image] 

Но все-таки я получил «Не удалось загрузить изображение» сообщение. Я понимаю, что клиентская сторона js ждет своего рода ответа. Но я не могу понять, что это должно быть. Пожалуйста, помогите мне.

ответ

2

После загрузки изображения, отвечают:

render json: { upload: { links: { original: @image.image_url } } } 

Чтобы понять, почему, скачать несжатого версию на NicEdit download page и проверьте строки:

1419..1425 - Когда закончите загрузку и получает ответ в формате JSON, он получает ссылку «» 'и вызывается функция onUploaded.

xhr.onload = function() { 
     try { 
     var res = JSON.parse(xhr.responseText); 
     } catch(e) { 
     return this.onError(); 
     } 
     this.onUploaded(res.upload); 
.... 

1443..1445 - на onUploaded функции, переходит к ключу внутреннего ключа объекта 'ссылки', атрибут 'оригинальный'

onUploaded : function(options) { 
    this.removePane(); 
    var src = options.links.original; 
    if(!this.im) { 
     this.ne.selectedInstance.restoreRng(); 
     var tmp = 'javascript:nicImTemp();'; 
     this.ne.nicCommand("insertImage", src); 
     this.im = this.findElm('IMG','src', src); 
    } 
... 

пс. Я имею в виду версию 0.9 r24