我正在尝试使用NicEdit html编辑器配置Rails4。所以我下载了nicEdit-latest.js,并用rails应用程序正确设置了它。一切正常,除了上传图片到自己的服务器。
我将nicEdit-latest.js中的上传url更改为
{nicURI:"http://myserver.com:3000/upload/get_image",...}
然后我用getimage_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宝石并创建了用于存储图像的模型。
class Picture < ActiveRecord::Base
mount_uploader :image,PictureUploader
end
我尝试在控制台中使用pry-gem进行游戏,并使用等代码成功保存上传的图像
picture.image = params[:image]
但我还是收到了"上传图片失败"的消息。我知道,客户端js正在等待某种响应。但是我不知道它应该是什么。请帮帮我。
上传图像后,用响应
render json: { upload: { links: { original: @image.image_url } } }
要了解原因,请在NicEdit下载页面上下载未压缩版本,并检查行:
1419..1425-当上传完成并收到JSON响应时,它会得到一个"upload"键并调用onUploaded函数
xhr.onload = function() {
try {
var res = JSON.parse(xhr.responseText);
} catch(e) {
return this.onError();
}
this.onUploaded(res.upload);
....
1443..1445-在onUploaded函数上,导航到键内部对象键"链接",属性"original’
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);
}
...
ps。我指的是版本0.9 r24