Ruby 3 中 URI:Module 的未定义方法“escape”

问题描述 投票:0回答:2

将我的 Rails 应用程序从 Rails 6.0.1 更新到 Rails 7.0.2.3 后

我遇到了宝石“回形针”的问题,'~> 6.1.0'

在应用程序中使用它时出现错误:

ActionView::Template::Error (undefined method `escape' for URI:Module
Did you mean?  escape_once):

在我的应用程序中的用法:

<%= image_tag current_user.image.url('med'), width: "36px" %>

当 ruby gemfile 本身存在错误时如何解决此问题,提前致谢。

paperclip ruby-on-rails-7 ruby-3
2个回答
9
投票

这种情况的解决方案是对库中缺少的方法进行猴子修补。

在初始化文件夹中添加一个 ruby filke uri_escape.rb :

添加猴子修补行:

module URI
  def self.escape(url)
    encode_www_form_component(url)
  end
end

就完成了。


0
投票

如果您因现已弃用的“回形针”gem 而遇到此问题,并且您还不想切换到 ActiveStorage,则有一个解决方案: kt-paperclip gem (https://rubygems.org/gems/kt-paperclip) 是 Paperclip 的一个分支。

他们已经修复了此 URI 问题,切换到 kt-paperclip 将解决上述回形针错误,并允许您继续,而无需迁移到 ActiveStorage。

© www.soinside.com 2019 - 2024. All rights reserved.