Gem Rails 5.1.4 中加入 rails_kindeditor 异常

bighuzi · 发布于 2017年11月09日 · 最后由 macrow 回复于 2017年11月10日 · 469 次阅读
96

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

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)

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

共收到 12 条回复
9800

gem过期了。。。。

96
9800pynix 回复

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

9800
32bighuzi 回复

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

9800
32bighuzi 回复

xxx_filter已经废弃了。。。。

96
9800pynix 回复

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

A908ae
32bighuzi 回复

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

9800

好累。。。。。。

96
9800pynix 回复

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

4755

@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本来就有这个问题的讨论,你应该去那讨论,楼主多学会利用搜索。
4755

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

gem 'rails_kindeditor', '~> 0.5.0', github: "Macrow/rails_kindeditor"
96
4755martin91 回复

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

269

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

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