在Rails 3.1中使用wash_out时,nil值为params

时间:2012-01-05 12:57:01

标签: ruby-on-rails soap

我正在关注Wash_Out页面上的指南。当我调用其中一个SOAP方法时,我收到以下错误:

NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]): 

API控制器看起来像这样

class ApiController < ApplicationController

  include WashOut::SOAP

  soap_action "integer_to_string",
              :args   => :integer,
              :return => :string
  def integer_to_string
    render :soap => params[:value].to_s
  end

  soap_action "concat",
              :args   => { :a => :string, :b => :string },
              :return => :string
  def concat
    render :soap => (params[:a] + params[:b])
  end
end

对WSDL的请求运行正常。我还将此列为所述库的bug report。我无法确定这是一个Rails问题还是一个Wash Out问题。 params变量在正常的控制器操作中可用。

版本:

  • Rails 3.1.3
  • wash_out 0.2.3
  • Ruby 1.9.3

1 个答案:

答案 0 :(得分:3)

这是Savon的一个错误,实际上是%)。哪个得到了wash_out。要修复此问题,只需在您的Gemfile中添加“gem'savon'”即可。将在即将推出的版本中修复。

您应该升级到wash_out 0.3.0。它包含许多改进和错误修复。