我使用:
创建了一个名为PaypalOrder
的新模型
rails generate model order_id:integer ip_address:string first_name:string last_name:string card_type:string card_expires_on:date
然后我跑了rake db:migrate
现在我的订单模型如下:
class PaypalOrder < ActiveRecord::Base
belongs_to :order
attr_accessor :card_number, :card_verification
validate :validate_card, :on => :create
def purchase
#code
end
private
def validate_card
#code
end
def credit_card
#code
end
end
和我创建的控制器:
class PaypalOrdersController < ApplicationController
def new
@paypal_order = PaypalOrder.new
end
def create
@paypal_order = current_order.build_paypal_order(params[:paypal_order])
if @paypal_order.save
# ...
else
render :action => "new"
end
end
end
但我收到以下错误:
NameError in PaypalOrdersController#create
undefined local variable or method `current_order' for #<PaypalOrdersController:0xf7b0a34>
为什么我无法访问current_order以及如何成功构建paypal_order
编辑:进行了以下更改:
class PaypalOrdersController < Spree::BaseController
现在工作正常!!
答案 0 :(得分:0)
为什么不将控制器的第8行更改为:
@paypal_order = PaypalOrder.new(params[:paypal_order])
如果是Rails 4,你将不得不这样做:
@paypal_order = PaypalOrder.new(params.require(:paypal_order).permit!)
答案 1 :(得分:0)
根据错误,current_order
方法不存在。
在调用之前,您需要首先创建current_order方法。
答案 2 :(得分:0)
我假设你对current_order的意图是重用新动作实例化的命令......
由于实例变量不会通过多个请求生存,因此您需要再次实例化paypalorder。
@paypal_order = PaypalOrder.new(params[:paypal_order])
enter code here