Ruby on rails - 控制器中 nil:NilClass 的未定义方法 '[]'



控制台中的参数传递显示为:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"Oj9EGihSOwgdXGLLQWqVESYMP/N4K0KzDS4KyVhWXPg=", "rfp"=>{"user_id"=>"", "client_id"=>"", "othercms"=>"", "otherecommerce"=>"", "numberofpage"=>"", "designcomplexity"=>"", "browser"=>"", "nuhacks"=>"", "nujavascript"=>"", "numberofmenu"=>"", "designpages"=>"", "designformobilepages"=>"", "framworks"=>"", "test_report_ids"=>[""], " payment_gateway_ids"=>[""], "payment_gateway_ids"=>["2"], "**payment_gateways"=>{"name"=>"slsk"}**, "commit"=>"Create Rfp", "project_id"=>"18"}

控制器

@rfp = Rfp.new(params[:rfp])
if [:payment_gateway][:name]
  @pm=PaymentGateway.new([:payment_gateways][:name])
end

由于支付网关是独立的模型:

尽管paymengt网关名称传入params,但它显示了上述错误。缺少什么?请给我任何帮助。提前谢谢。

我认为您不了解数据类型。在第一行中,初始化了Rfp类的新实例,然后尝试检索不包含任何内容的索引,而不是数组或散列。对此有两种解决方案。

  1. 我注意到payment_gateways在rfp参数中,所以我猜测它的关联或属性,所以你可以检查"在新初始化的对象中显示payment_gate的所有名称"

    if @rfp.payment_gateways.map(&:name).any?

  2. 入住参数:

    if params[:rfp].present? and params[:rfp][:payment_gateways].present? and params[:rfp][:payment_gateways][:name].present?

之后,初始化您的PaymentGateway实例:

`@pm = PaymentGateway.new(params[:rfp][:payment_gateways])`

根据您的代码,它应该是if params[:rfp][:payment_gateways][:name]而不是if [:payment_gateway][:name]

所以它应该看起来像

作为你的不完整参数,还有rfp,所以它可能是params[:rfp][:payment_gateways][:name]

    if params[:rfp][:payment_gateways][:name]
      @pm=PaymentGateway.new(params[:rfp][:payment_gateways][:name])
    end

或内联

 @pm=PaymentGateway.new(params[:rfp][:payment_gateways][:name]) if params[:rfp][:payment_gateways][:name]

在控制器中,它应该是:

@rfp = Rfp.new(params[:rfp])
if params[:payment_gateway]
  @pm=PaymentGateway.new(params[:payment_gateways][:name])
end

甚至更好的

@rfp = Rfp.new(params[:rfp])
@pm=PaymentGateway.new(params[:payment_gateways][:name]) unless params[:payment_gateway].nil?

还检查它应该是params[:payment_gateway]还是params["payment_gateway"]

相关内容

  • 没有找到相关文章

最新更新