ueditor之ruby on rails 版
2016-05-13 14:11
375 查看
最近公司的项目开始要使用ueditor了,但是ueditor却没有提供rails的版本,因此需要自己去定制化ueditor来满足项目的需求。不多说了,先简要说明下使用方法:
ueditor目录下:
注意:需要将ueditor目录放在工程/public/plugins/目录下
1 ueditor根目录下的ueditor.config.js
和原本的ueditor一样,在红色部分处配置处理上传文件的controller和action,此处我已经做了修改,所以这里配置好之后,提交表单会直接上传到这里配置好的action
2 ueditor根目录下的config.json
注意,该文件和原始的ueditor config.json文件的配置方法是完全一样的,我这里展示下我的一些配置
只修改了imageActionName选项,这里对应的名称将在前面所配置的action里面通过params[:ueditor_action]中取出(ueditor原本的是action,但是和rails冲突,所以我对其进行了修改)
压缩包根目录下:
resource_controller.rb
该文件只用作示例,其应该根据使用者的需求对应相应的controller。
在controller中可以需要这样进行处理:
ueditor中改变的文件为ueditor.all.js,在文件中搜索“李江涛”可以快速定位到我所更改的地方,部分地方可能未标识:
我的邮箱:seancheer@163.com
工程地址:https://github.com/seancheer/ueditor_with_rails
ueditor目录下:
注意:需要将ueditor目录放在工程/public/plugins/目录下
1 ueditor根目录下的ueditor.config.js
和原本的ueditor一样,在红色部分处配置处理上传文件的controller和action,此处我已经做了修改,所以这里配置好之后,提交表单会直接上传到这里配置好的action
2 ueditor根目录下的config.json
注意,该文件和原始的ueditor config.json文件的配置方法是完全一样的,我这里展示下我的一些配置
只修改了imageActionName选项,这里对应的名称将在前面所配置的action里面通过params[:ueditor_action]中取出(ueditor原本的是action,但是和rails冲突,所以我对其进行了修改)
压缩包根目录下:
resource_controller.rb
该文件只用作示例,其应该根据使用者的需求对应相应的controller。
在controller中可以需要这样进行处理:
#encoding:utf-8 require 'json' require 'tempfile' require 'base64' #用于上传项目相关的资源 class ResourceController < ApplicationController #ueditor的配置 def handle_file #ueditor是通过在url中的传入ueditor_action(原本为action,但是由于其与rails冲突,所以我将其改为了ueditor_action)字段来区分具体的操作的 return if params[:ueditor_action].blank? cur_action = params[:ueditor_action] #刚进入页面时editor会进行config的访问 if (cur_action == "config") #打开config.json文件,将其返回,注意,我这里是将config.json文件放在/public/plugins/ueditor/目录下,可以自己的需求,对这里进行相应的更改 json = File.read("#{Rails.root.to_s}/public/plugins/ueditor/config.json") #正则替换,使其成为ueditor可以识别的格式 json = json.gsub(/\/\*[\s\S]+?\*\//, "") result = JSON.parse(json).to_s result = result.gsub(/=>/,":") #返回结果 render :text => result #图片上传 elsif (cur_action == "upload_image") upload_image_video #视频上传 elsif (cur_action == "upload_video") upload_image_video #涂鸦上传 elsif (cur_action == "upload_scrawl") upload_scrawl else respond_result end end private #涂鸦文件的处理,ueditor使用base64编码,并且为png格式 def upload_scrawl status = 'SUCCESS' if params[:upfile].blank? return end scrawl_base64 = params[:upfile] tempfile = Tempfile.new("upload_scrawl.png") tempfile.binmode tempfile.write(Base64.decode64(scrawl_base64)) tempfile.close #开始保存文件 filename = get_random_string(10) + "_" + get_random_string(10) + "_" + get_random_string(10) + ".png" #保存文件到项目指定的路径,该方法未实现,需要自己去实现 save_file(tempfile,filename) respond_result(filename,status) end #上传图片和视频的处理 def upload_image_video status = 'SUCCESS' #对视频文件或者图片文件进行保存,需要自己实现 respond_result(filename,status) end #负责向客户端返回数据 def respond_result(filename='', status='') #该变量是根据ueditor自带的demo写的,不知道为什么,demo没有也没有传这个字段 callback = params[:callback] response_text = '' #构造需要返回的数据,这个是ueditor已经约定好的,不能随意对字段进行修改。也不能使用rails内置的render :json语句,因为这样最后得到的数据格式是无法被ueditor解析的。 if filename.blank? response_text = "{\"name\":\"\"," + "\"originalName\":\"\"," + "\"size\":\"\",\"state\":\"#{status}\",\"type\":\"\",\"url\":\"\"}" else response_text = "{\"name\":\"#{filename}\"," + "\"originalName\":\"#{filename}\"," + "\"size\":\"#{File.size(TalentUtils.get_upload_file(filename)).to_s}\",\"state\":\"#{status}\",\"type\":\"#{File.extname(filename)}\",\"url\":\"#{filename}\"}" end if callback.blank? render :text => response_text else render :text => "<script>"+ callback +"(" + response_text + ")</script>" end end #生成随机的字符串 def get_random_string(num = 5) #5是指生成字符串的个数,默认为5 rand(36 ** num).to_s(36) end end
ueditor中改变的文件为ueditor.all.js,在文件中搜索“李江涛”可以快速定位到我所更改的地方,部分地方可能未标识:
我的邮箱:seancheer@163.com
工程地址:https://github.com/seancheer/ueditor_with_rails
相关文章推荐
- 跟我一起学ruby (转)
- 跟我一起学ruby (转)
- ruby两套教程
- ruby两套教程
- ruby cookbook
- Ruby中gem包管理器的用法及用bundler来管理多版本的gem
- ruby计算时间差
- ruby 元编程
- ruby迭代器枚举器
- ruby环境sass编译中文出现Syntax error: Invalid GBK character错误解决方法
- TIOBE 2016年5月编程语言排行榜:Ruby排名创历史新高
- 如何在Mac OS X上安装 Ruby运行环境
- ruby 语法规则(syntax rules)
- ruby gem
- Ruby 元编程 第二版随笔(一)
- ruby安装时提示SSL证书错误
- Ruby文件操作
- Ruby学习: 全局变量 和常量
- Ruby学习: 类变量和类方法
- Ruby学习: 类的定义和实例变量