Gem Rails 5.1.4 中加入 rails_kindeditor 异常

bighuzi · November 09, 2017 · Last by macrow replied at November 10, 2017 · 2223 hits

上传图片的时候出现以下异常

ActionController::RoutingError 
(undefined method `skip_before_filter' for Kindeditor::AssetsController:Class
Did you mean?  skip_before_action):

关键 gem

gem 'carrierwave', '~> 1.2', '>= 1.2.1'
gem 'mini_magick', '4.7.0'
gem 'jquery-validation-rails'
#gem 'inherited_resources'
gem "nested_form", '0.3.2'
gem 'rails_kindeditor', '~> 0.5.0'

gem list 中查看

rails (5.1.4)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.0.3)
rails_kindeditor (0.5.0)
railties (5.1.4)
rake (12.1.0, 10.4.2)

我看有很多兄弟有出现这个问题。但是不知道怎么解决的。

gem 过期了。。。。

Reply to pynix

我卸载后,重新安装也还有这个问题。

Reply to bighuzi

过期了的意思是该更新了。。。。。。

Reply to bighuzi

xxx_filter 已经废弃了。。。。

Reply to pynix

我已经执行过 gem update。已经更新过了的。。但是还是会存在这个问题

Reply to bighuzi

实在要用就在 application_controller 下给 skip_before_action 一个别名。

好累。。。。。。

Reply to pynix

😥 哥,除了种方法更新还需要怎么更新哦

@bighuzi 首先,*_filter 这类 callback 从 4.2 开始废弃,你用的是 5.1,肯定早就没有这方法了,然后你遇到的错误,说明你用的 gem 依赖了旧版本的 rails 的代码。一般解决这类问题,有两个思路:

  1. 升级你用的 gem,以确保它的版本跟 Rails 5.1 兼容,这一般是优先考虑的方式;
  2. 自己加上补丁,把 gem 里边依赖的方法加上,解决 undefined method error,这种方式是下策,迫不得已才用。

所以,针对你说的

我已经执行过 gem update。已经更新过了的。。但是还是会存在这个问题

这个是思路 1,但是思路对不代表方案对。首先:

  1. 你到底是执行的 bundle update 还是 gem update?请先明白,只有 bundle update rails_kindeditor 才能更新你项目里用的 rails_kindeditor 的版本,而 gem update 更新的是系统里已经安装的 rails_kindeditor 的版本,这两个事情并不等价,如果不能理解,建议你先学习下 bundler 的相关知识。如果你用的 gem install,那请先尝试 bundle update 之后看看行不行;
  2. 即使你确保已经为项目更新到了最新版本的 rails_kindeditor,仍然可能会有问题。因为可能你用的 rails_kindeditor 压根就不支持,你再怎么升级也没有用;
  3. 我这里说的都挺废话的,因为官方 repo 本来就有这个问题的讨论,你应该去那讨论,楼主多学会利用搜索。

@bighuzi 不好意思,上一条评论没有看你的 Gemfile,你确实已经是安装最新发布版本的 rails_kindeditor 了,但是我发现那个版本并没有包含这个问题的修复,修复代码还在 master 分支,所以如果你一定要使用,可以尝试修改 Gemfile

gem 'rails_kindeditor', '~> 0.5.0', github: "Macrow/rails_kindeditor"
Reply to martin91

谢谢你的回答我也去看了 v0.5.0 的分支情况,确实还在 master 上。 准备换一个编辑器算了。

不好意思,这个 gem 好久没更新了,昨天已经把错误修正了,可使用 0.5.1 版本。

You need to Sign in before reply, if you don't have an account, please Sign up first.