Github repo: https://github.com/jasl/ueditor_rails
动机很简单:
于是就动手写了一个,思路借鉴了 ckeditor 特点有:
skip_before_filter :verify_authenticity_token
(代码)ueditor_text_tag 'test1', 'text here', :id => 'xxxx', :width => 500, :toolbars => [["bold","italic","underline"]]
或者f.ueditor_text :body
这样下一步准备支持跨域的文件上传,主要是我的网站为了降低压力把 assets 放在又拍云上,自己有这个需求。
@dave 似乎之前看到你写过一个,看看我的哈~
很不错!我的 gem 主要是方便集成 ueditor,没有做更深入的 rails 集成,我倾向于 js 的东西还是在 js 里完成,写成 helper 不一定更方便。不过大家有不同的需求,多多益善:)
@as181920 我曾经也用 kindeditor 替换原因帖子里也说了 html 不干净,ue 的上传做的太复杂不如 kind 简单 其他我觉得都比他强了 有机会你可以尝试下 另 我目前看到最 cool 的是 reactor 不过收费
@stephen 奇怪 我有测试过,没有问题 这个是我的玩具站 代码在https://github.com/jasl/a_rails_start_up_omakase ueditor 的配置文件的代码https://github.com/jasl/a_rails_start_up_omakase/blob/master/app/assets/javascripts/ueditor_config.js.erb
确认一下是不是最新的 0.0.4 版,另外确认一下/public 里没有/assets 有可能是之前 precompile 过的 assets 造成了缓存 另外就是检查一下开发模式下 页面的 html 看看 ueditor_config.js 里代码的 toolbars 的配置是如何的,如果和配置的有出入,是不是之前自己也集成过 ue?
最好能提供给我更详尽的信息,我好帮你 debug
@jasl 麻烦问一下我上传图片的时候为什么报错:
undefined local variable or method swf_imageuploader_path
for #<#<...>: ...>
这个 swf_imageuploader_path 在什么地方初始化的?
我的 dialogs_controller.rb 代码:
class UeditorRails::DialogsController < ApplicationController
def image
render :template => "ueditor_rails/dialogs/image"
end
...
app/assets/javascripts/ueditor_config.js.erb: imageUrl: "<%= Rails.application.routes.url_helpers.ueditor_image_path %>"
#14 楼 @felix 你是需要自己实现上传窗体? 如果使用 UEditor 自带的上传插件 是不需要实现 DialogsController 的 我已经实现 上传你只需要实现上传逻辑 如 https://github.com/jasl/a_rails_start_up_omakase/blob/master/app/controllers/ueditor/assets_controller.rb 就像一个普通的 rails action 一样 在 config 里的配置如 https://github.com/jasl/a_rails_start_up_omakase/blob/master/app/assets/javascripts/ueditor_config.js.erb
#17 楼 @felix 大概是你没有在 routes 里 mount...
参见https://github.com/jasl/a_rails_start_up_omakase/blob/master/config/routes.rb#L14
如果你按照 readme 的步骤来做 应该是不会有问题的rails g ueditor_rails:install
会 handle 好一切
@felix 邮件已经收到
sorry 我 readme 上写的 require 是错的 应该是 require ./ueditor_config
然后是不需要UE.getEditor('editor');
的
我这就更正一下 readme
@jasl 还是不行,报同样的错: Started GET "/dialogs/image" for 127.0.0.1 ... Processing by ErrorController#page_404 as HTML
@felix get 的 url 有问题,应该是/ueditor/dialogs/image
奇怪...我在一个新建的工程里按照你的操作回溯了一下 结果是正常的...
#33 楼 @felix 文件和路由配置是不会重新生成的 除非你删掉和去掉对应的行
Started GET "/ueditor/dialogs/image" for 127.0.0.1 at 2013-04-25 11:44:46 +0800
Processing by UeditorRails::DialogsController#image as HTML
Rendered /Users/jasl/.rvm/gems/ruby-1.9.3-p392/gems/ueditor_rails-0.0.4/app/views/ueditor_rails/dialogs/image.html.erb (38.2ms)
这样就正确了...
Routes for UeditorRails::Engine: libs_swf_image_uploader GET /libs/swf_image_uploader(.:format) libs#swf_image_uploader libs_swf_upload GET /libs/swf_upload(.:format) libs#swf_upload libs_swf_upload_fp9 GET /libs/swf_upload_fp9(.:format) libs#swf_upload_fp9 libs_fclipboard_ueditor GET /libs/fclipboard_ueditor(.:format) libs#fclipboard_ueditor dialogs_attachment GET /dialogs/attachment(.:format) dialogs#attachment dialogs_image GET /dialogs/image(.:format) dialogs#image dialogs_wordimage GET /dialogs/wordimage(.:format) dialogs#wordimage dialogs_scrawl GET /dialogs/scrawl(.:format) dialogs#scrawl
#37 楼 @jasl http://localhost:3000/ueditor/dialogs/image 也不行,报错: ActionController::RoutingError - uninitialized constant DialogsController
script/rails:6 in require
我看你的 script/rails 里面还多了几行配置,我的 script/rails 里面是这样的:
#!/usr/bin/env ruby
APP_PATH = File.expand_path('../../config/application', FILE)
require File.expand_path('../../config/boot', FILE) require 'rails/commands'
#55 楼 @felix ueditor 的上传使用了 swfupload 这个组件,所以说你上传逻辑返回的结构体遵循他的协议即可,你也可以参考的我的实现https://github.com/jasl/a_rails_start_up_omakase/blob/master/app/controllers/ueditor/assets_controller.rb 关注返回的结构体即可
#55 楼 @felix http://ueditor.baidu.com/website/helper.html的 16 同样描述了 ueditor 需要返回的结构体
我试着用这个,本来应用有一个上传的 action photos/tiny_upload, 我配置写成这样好像不起作用
imageUrl: "<%= Rails.application.routes.url_helpers.photos_tiny_upload_path %>"
它还是会发到/ueditor/dialogs/image
并报uninitialized constant DialogsController
不知道是哪里还没有配置对
Bundler could not find compatible versions for gem "rails":
In Gemfile:
rails (~> 5.1.4)
ueditor_rails was resolved to 0.0.4, which depends on
rails (~> 3.2.1)
以后不打算支持一下 Rails 3.2.1 以后的版本吗?
@jasl 大佬请教点问题~ 我在 test (Rails 5.1.4) 的项目中,使用 gem 会有资源引用的一些问题,如下:
app/assets/javascripts/ueditor_rails/_config.js.erb
该配置文件中的 asset_path('ueditor/')
路径找不到,修改为assert_path('asset/ueditor')
后,demo 可以正常运行。
请问 merge 这个修改,会不会影响到 Rails 3.2.1 以前的项目使用这个 gem?
在开发环境下,一切正常。部署在生产环境下,编辑框显示不出来。
production.log 有如下提示
...
ActionController::RoutingError (No route matches [GET] "/assets/ueditor/lang/zh-cn/zh-cn.js"):
...
ActionController::RoutingError (No route matches [GET] "/assets/ueditor/themes/default/ueditor.css"):
...
好像是资源引用地址有问题,在 ueditor_config.js.erb 中有如下配置
//语言配置项,默认是zh-cn。
//,lang:'zh-cn'
//,langPath:URL +"lang/"
//主题配置项,默认是default。
, theme: 'default', themePath: "<%= asset_path 'assets/ueditor/themes/' %>"
以前用 kindeditor 时,在生产环境时,需要先执行
rails kindeditor:assets
# Precompiling assets不再自动从vendor/assets和lib/assets拷贝非JS/CSS文件.
# 此方法可将kindeditor自动拷贝到你的public/assets目录.
请问该怎么解决这个问题,谢谢了。
没有 digest,其实 ueditor-rails 里面我当初集成的 ueditor 是我魔改过的版本,所以才能完美支持 Assets pipeline...
当然如果用我做的版本也不好使,我也不知道怎么折腾了... 换 ckeditor 啥的吧
markdown 的问题是表达能力太弱。。。论坛回复这级别算是够用了,但是混合排版之类,还是得上 ckeditor tinymce ueditor(其实我都不知道他还活着没。。。)这种大块头,另外我现在挺看好 https://github.com/quilljs/quill 的
用了 ckeditor,在生成环境下编译后的 application.js 文件高达 780K。 虽然有 turbolinks,但直接影响到首次打开网页的速度。
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= require ckeditor/init
To reduce the asset precompilation time, you can limit plugins and/or languages to those you need:
# in config/initializers/ckeditor.rb
Ckeditor.setup do |config|
config.assets_languages = ['en', 'fr']
config.assets_plugins = ['image', 'smiley']
end
设置后 js 文件大小没变,请高手指点下,有什么好的优化方案吗?
Assets pipeline 有一个编译规则,就是所有文件名为 application
的,都会被编译,所以你大可把 ckeditor 相关的 JS(当然 CSS 也是同理的)单放到一个文件里(比如 editor/application.js
),然后在需要编辑器的页面里,引用他。
另外你也可以自己把 Ckeditor 的文件引入到 AP 的 Precompile 列表去,这个看看文档就好了
当然和 turbolinks 配合的时候可能需要在 <script>
标签的放置位置有要求,我前端苦手这个没有太多研究。
然后封个 helper 方便使用也可,类似 https://github.com/jasl/a_rails_start_up_omakase/blob/master/app/helpers/application_helper.rb#L100 这个代码的思路还是适用现在的