我在控制台节目中传递参数:
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网关名称传递参数,它也显示错误。缺什么?请给我任何帮助。提前谢谢。
答案 0 :(得分:1)
根据您的代码,它应为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
或inliner
@pm=PaymentGateway.new(params[:rfp][:payment_gateways][:name]) if params[:rfp][:payment_gateways][:name]
答案 1 :(得分:1)
我认为您不了解数据类型。 在第一行,您初始化了Rfp类的新实例,然后您尝试检索无索引,而不是数组或散列。 有两种解决方案。
我注意到payment_gateways在rfp参数内,所以我猜它的关联或属性,所以你可以检查"在新初始化的对象中显示payment_gateways的所有名称"
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])`
答案 2 :(得分:0)
在Controller中,它应该是:
@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"]
。