控制台中的参数传递显示为:
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类的新实例,然后尝试检索不包含任何内容的索引,而不是数组或散列。对此有两种解决方案。
-
我注意到payment_gateways在rfp参数中,所以我猜测它的关联或属性,所以你可以检查"在新初始化的对象中显示payment_gate的所有名称"
if @rfp.payment_gateways.map(&:name).any?
-
入住参数:
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"]
。