Ruby on rails 5 未定义的方法'each';对于nil:NilClass(ActiveMerchant)

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

填写付款信息后,当我单击“下订单”时,我会出现此错误

订单控制器中的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])

 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]),在控制台中,它打印什么?