Ruby on Rails 3中,Savon如何避免将字符串错误地转换为哈希?

2026-04-11 17:212阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计511个文字,预计阅读时间需要3分钟。

Ruby on Rails 3中,Savon如何避免将字符串错误地转换为哈希?

我在Rails 3.2.11上安装了Savon 2.0.2。尝试在控制台中创建一个新客户端时,遇到了TypeError:无法将String转换为Hash:1.9.3-p362 :003 client=Savon::Client.new(http://www.webservicex.net/uszip.asmx?WS)

原因可能是Savon版本与Rails版本不兼容。尝试以下方法解决:

1. 升级Rails版本到与Savon 2.0.2兼容的版本,如Rails 4.2.7。

2.降级Savon版本到与Rails 3.2.11兼容的版本,如Savon 2.10.0。

如果以上方法都无法解决问题,请尝试以下步骤:

1. 在Gemfile中删除Savon依赖,并添加以下内容:

gem 'savon', '2.10.0'

2.运行`bundle install`安装依赖。

3.尝试重新创建客户端,看是否解决问题。

我刚刚在Rails 3.2.11上安装了Savon 2.0.2.当我尝试在控制台中创建一个新客户端时,我得到TypeError:无法将String转换为Hash:

1.9.3-p362 :003 > client = Savon::Client.new("www.webservicex.net/uszip.asmx?WSDL") TypeError: can't convert String into Hash from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `merge' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `initialize' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `new' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `initialize' from (irb):3:in `new' from (irb):3 from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'

知道为什么会发生这种情况吗?它是一个全新的,几乎是普通的Rails应用程序,因此我不明白可能出现的问题.

Ruby on Rails 3中,Savon如何避免将字符串错误地转换为哈希?

尝试:

client = Savon::Client.new(wsdl: "www.webservicex.net/uszip.asmx?WSDL")

要么

client = Savon.client(wsdl: "www.webservicex.net/uszip.asmx?WSDL")

本文共计511个文字,预计阅读时间需要3分钟。

Ruby on Rails 3中,Savon如何避免将字符串错误地转换为哈希?

我在Rails 3.2.11上安装了Savon 2.0.2。尝试在控制台中创建一个新客户端时,遇到了TypeError:无法将String转换为Hash:1.9.3-p362 :003 client=Savon::Client.new(http://www.webservicex.net/uszip.asmx?WS)

原因可能是Savon版本与Rails版本不兼容。尝试以下方法解决:

1. 升级Rails版本到与Savon 2.0.2兼容的版本,如Rails 4.2.7。

2.降级Savon版本到与Rails 3.2.11兼容的版本,如Savon 2.10.0。

如果以上方法都无法解决问题,请尝试以下步骤:

1. 在Gemfile中删除Savon依赖,并添加以下内容:

gem 'savon', '2.10.0'

2.运行`bundle install`安装依赖。

3.尝试重新创建客户端,看是否解决问题。

我刚刚在Rails 3.2.11上安装了Savon 2.0.2.当我尝试在控制台中创建一个新客户端时,我得到TypeError:无法将String转换为Hash:

1.9.3-p362 :003 > client = Savon::Client.new("www.webservicex.net/uszip.asmx?WSDL") TypeError: can't convert String into Hash from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `merge' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/options.rb:49:in `initialize' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `new' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/savon-2.0.2/lib/savon/client.rb:10:in `initialize' from (irb):3:in `new' from (irb):3 from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:47:in `start' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands/console.rb:8:in `start' from /Users/jasonswett/.rvm/gems/ruby-1.9.3-p362/gems/railties-3.2.11/lib/rails/commands.rb:41:in `<top (required)>' from script/rails:6:in `require' from script/rails:6:in `<main>'

知道为什么会发生这种情况吗?它是一个全新的,几乎是普通的Rails应用程序,因此我不明白可能出现的问题.

Ruby on Rails 3中,Savon如何避免将字符串错误地转换为哈希?

尝试:

client = Savon::Client.new(wsdl: "www.webservicex.net/uszip.asmx?WSDL")

要么

client = Savon.client(wsdl: "www.webservicex.net/uszip.asmx?WSDL")