Ruby on rails 5 未定义的方法'each';对于nil:NilClass(ActiveMerchant)
填写付款信息后,当我单击“下订单”时,我会出现此错误 订单控制器中的NoMethodError#创建 nil:NilClass的未定义方法“each” 订单控制器Ruby on rails 5 未定义的方法'each';对于nil:NilClass(ActiveMerchant),ruby-on-rails-5,activemerchant,Ruby On Rails 5,Activemerchant,填写付款信息后,当我单击“下订单”时,我会出现此错误 订单控制器中的NoMethodError#创建 nil:NilClass的未定义方法“each” 订单控制器 def create @order = Order.new(order_params) @order.add_line_items_from_cart(@cart) credit_card = ActiveMerchant::Billing::CreditCard.new(params[:credit_card]) resp
def create
@order = Order.new(order_params)
@order.add_line_items_from_cart(@cart)
credit_card = ActiveMerchant::Billing::CreditCard.new(params[:credit_card])
respond_to do |format|
if @order.save
Cart.destroy(session[:cart_id])
session[:cart_id] = nil
format.html { redirect_to category_url(Category.first), notice: 'Thank you for your order.' }
format.json { render :show, status: :created, location: @order }
else
format.html { render :new }
format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
订单型号:
attr_accessor :card_no, :card_cvv, :expiry_date
我猜我需要将:card\u no、:card\u cvv和:expiration\u date分组到一个标记为“credit\u card”的数据结构中,但我不知道如何分组。谢谢
编辑:
NoMethodError(未定义的方法'each'表示nil:NilClass):
app/controllers/orders\u controller.rb:32:in'new'
app/controllers/orders\u controller.rb:32:in'create'
渲染C:/RailsInstaller/Ruby2.2.0/lib/ruby/
您需要根据从表单中发送的内容获取参数,因此,如果您想访问这些参数,必须从
订单
根目录获取参数,也就是说,卡号
将是参数[:订单][:卡号]
,这样所有的参数都将被删除
为了使用ActiveMerchant gem并创建一张新的“信用卡”,您需要将您从表单中收到的值传递到那里,例如:
credit_card = ActiveMerchant::Billing::CreditCard.new(
:first_name => params[:order][:first_name],
:last_name => params[:order][:last_name],
:number => params[:order][:card_cvv],
:month => params[:order][:month],
:year => Time.now.year+1, # documentation value
:verification_value => '000' # documentation value
)
您需要根据从表单中发送的内容获取参数,因此,如果您想访问这些参数,必须从
订单
根目录获取参数,也就是说,卡号
将是参数[:订单][:卡号]
,这样所有的参数都将被删除
为了使用ActiveMerchant gem并创建一张新的“信用卡”,您需要将您从表单中收到的值传递到那里,例如:
credit_card = ActiveMerchant::Billing::CreditCard.new(
:first_name => params[:order][:first_name],
:last_name => params[:order][:last_name],
:number => params[:order][:card_cvv],
:month => params[:order][:month],
:year => Time.now.year+1, # documentation value
:verification_value => '000' # documentation value
)
你解决这个问题了吗?没有。请???你能加上你得到的全部错误吗?为了更好地了解发生了什么以及发生了什么。这实际上是整个错误消息,但它指向这一行:credit_card=ActiveMerchant::Billing::CreditCard.new(params[:credit_card]),在控制台中,它打印了什么?您解决了这个问题吗?没有。请???你能加上你得到的全部错误吗?为了更好地了解发生了什么以及发生了什么。这实际上是整个错误消息,但它指向这一行:credit_card=ActiveMerchant::Billing::CreditCard.new(params[:credit_card]),在控制台中,它打印什么?