ueditor之ruby on rails 版
最近公司的项目开始要使用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中可以需要这样进行处理:
#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
ueditor之ruby on rails 版的更多相关文章
- 如何从 0 开始学 ruby on rails (漫步版)
如何从 0 开始学 ruby on rails (漫步版) ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架,简称 rails. 有很多人对 rails 感兴 ...
- (转) 如何从 0 开始学 ruby on rails (漫步版)
原文:http://readful.com/post/12322300571/0-ruby-on-rails ruby 是一门编程语言,ruby on rails 是 ruby 的一个 web 框架, ...
- Ruby on Rails Tutorial 第2版 学习笔记
Ruby on Rails Tutorial 第2版 在线阅读:http://railstutorial-china.org/ 英文版:http://ruby.railstutorial.org/ru ...
- ubuntu 14.04中安装 ruby on rails 环境(填坑版) 呕血推荐
环境:在win7 上Vmware虚拟机环境中安装的ubuntu 14.04 开发相关: ruby 2.2.0 rails 4.2.0 sublime text 3 本文说明:所有的命令均在$ 之后,若 ...
- ruby on rails 实战(一)
通过ruby on rails 一步一步搭建个人站点,涉及到的技术有:ruby,rails,javascript,jquery 操作系统:win7 IDE: rubymine 5.4. 第一步,下载安 ...
- [Ruby on Rails系列]1、开发环境准备:Vmware和Linux的安装
Ruby on Rails是一个采用Ruby语言的遵循MVC模式的Web开发框架.使用RoR会得到更加快速爽快的Web开发体验.相比于Java EE,该框架使Web开发的速度和效率变得更加轻快和敏捷. ...
- [Ruby on Rails系列]2、开发环境准备:Ruby on Rails开发环境配置
前情回顾 上次讲到Vmware虚拟机的安装配置以及Scientific Linux 6.X系统的安装.这回我们的主要任务是在Linux操作系统上完成Ruby on Rails开发环境的配置. 在配置环 ...
- Ruby on Rails创始人DHH谈如何进行混合移动APP开发
混合型APP兼具原生型APP软件良好用户交互体验的优势和网页型APP软件跨平台开发的优势,并且其开发成本和网页型APP软件接近,其开发效率也远高于原生型APP软件.混合型APP已经被众多企业所认可.最 ...
- Ruby on Rails 實戰聖經阅读(二)
1.操作系统 centos5.4 2.安装ruby yum install ruby 会安装得到 1.8.5 如果你公司用的是1.8.X就无所谓了, 拿这个学习就行了 如果你们公司用的是1.9.X,那 ...
随机推荐
- 为 Joomla 而生的 Kunena 论坛安装手册
查看并下载最新版本Kunena论坛,或直接下载Kunena1.7.2.如果你打算在Joomla网站中安装一个论坛,可以考虑一下Kunena论坛组件,一个为Joomla而生的免费的开源论坛组件. 安装: ...
- vmware下linux 如何添加硬盘
1.在虚拟机的设置中增加一块硬盘. setting -> add disk -> create a new virtual disk -> SCSI 设定大小,这里给3G:更 ...
- HW4.15
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- windows下mysql 控制台操作
windows mysql 控制台操作 1.首先打开cmd进入dos窗口 2.切换至目录: F: cd PHPnow-1.5.6\MySQL-5.0.90\bin 3.进入mysql: mysql - ...
- canvas 俄罗斯方块
<!doctype html> <html> <body> <canvas id="can" width="360px" ...
- POJ 1185 状态压缩DP 炮兵阵地
题目直达车: POJ 1185 炮兵阵地 分析: 列( <=10 )的数据比较小, 一般会想到状压DP. Ⅰ.如果一行10全个‘P’,满足题意的状态不超过60种(可手动枚举). Ⅱ.用DFS ...
- Android中利用OpenMax 编程的基本流程
近期因为公司在做数字电视,播放器和模块由供应商打包一起卖,驱动调通了,但是播放器要硬件解码,和平台差异,原厂又没有相关文档,就自己试着看了一个系统的播放器流程,顺便整理了一下,也方便以后查询,希望对播 ...
- Activiti5.16.4数据库表结构
一.ACTIVITI 数据库E-R图(5.16.4) Activiti 5.16.4 总共有24张表,增加act_evt_log(事件日志),以及增加了对SasS的支持. 在流程定义.运行实例和历史的 ...
- [Javascript + rxjs] Using the map method with Observable
Like an array, Observable has a map method that allows us to transform a sequence into a new Observa ...
- 关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等)
目前国内对于双卡智能手机的需求还是很大的,各种复杂的业务会涉及到双卡模块:而android标准的api又不提供对双卡的支持.导致国内双卡模块标准混乱,各个厂商各玩各的.目前我知道的双卡解决方案就有:m ...