Gem Rails 5.1.4 中加入 rails_kindeditor 异常

bighuzi · 2017年11月09日 · 最后由 macrow 回复于 2017年11月10日 · 2235 次阅读

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

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 过期了。。。。

pynix 回复

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

bighuzi 回复

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

bighuzi 回复

xxx_filter 已经废弃了。。。。

pynix 回复

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

bighuzi 回复

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

好累。。。。。。

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"
martin91 回复

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

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

需要 登录 后方可回复, 如果你还没有账号请 注册新账号