1

我正在尝试使用 NicEdit html 编辑器配置 Rails 4。所以我下载了 nicEdit-latest.js 并使用我的 rails 应用程序正确设置它。一切正常,除了将图像上传到自己的服务器。

我将 nicEdit-latest.js 中的上传网址更改为

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

然后我用 get 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

我配置了carrierwave gem 并创建了用于存储图像的模型。

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

我尝试使用 pry gem 在控制台中播放,并使用类似的代码成功保存了上传的图像

picture.image = params[:image]

但我仍然收到“上传图片失败”消息。我了解,客户端 js 正在等待某种响应。但我无法弄清楚它应该是什么。请帮我。

4

1 回答 1

2

上传图片后,回复:

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

要了解原因,请在NicEdit 下载页面下载未压缩版本并检查以下行:

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

于 2013-09-09T03:50:48.143 回答