You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Rails集成PayPal REST API时URI:Module无escape方法的NoMethodError

错误原因
  • 该报错由PayPal Ruby SDK与当前运行的Ruby版本不兼容导致:Ruby 3.0及以上版本正式移除了早前已被标记为废弃的URI.escape方法,而旧版本的PayPal SDK内部依赖这个已删除的方法,因此调用@client.execute request时触发异常。
  • 你参考的教程发布时间较早,配套使用的SDK版本仅适配Ruby 2.x系列,若你本地Ruby版本高于2.7就会触发该问题。
修复方案

方案1:升级PayPal官方SDK(推荐)

PayPal官方已在新版SDK中修复了该兼容问题,直接更新Gemfile中的PayPal依赖配置即可:

# Gemfile
gem 'paypal-checkout-sdk', '~> 1.0.4'

修改后执行命令安装新版本:

bundle update paypal-checkout-sdk

重启Rails服务后即可正常运行。

方案2:临时补丁(仅应急使用)

如果你暂时无法升级SDK,可以手动补全缺失的URI.escape方法,在Rails项目config/initializers目录下新建uri_escape_patch.rb补丁文件,内容如下:

# config/initializers/uri_escape_patch.rb
unless URI.respond_to?(:escape)
  module URI
    def self.escape(*args)
      CGI.escape(*args)
    end
  end
end

添加后重启Rails服务即可生效。该方案仅为临时兼容处理,长期使用建议优先升级官方SDK避免出现其他兼容问题。

内容的提问来源于stack exchange,提问作者teduniq

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:45:08