我收到此错误消息
金额不能为空
我想根据创建的金额创建付款
我想我的before_filter {@amount=Amount.new}
,它没有将创建的金额分配给付款方式。因此,即使在创建新金额后,我的付款仍然会出现上述错误。
付款控制器
before_filter {@amount =Amount.new}
def new
@payment = Payment.new
respond_to do |format|
format.html
format.json { render :json => @order }
end
end
def create
@payment = @amount.payments.build(params[:payment])
if @payment.save
if @payment.purchase
render :action=> "success"
else
render :action=> "failure"
end
else
render :action => "new"
end
end
金额控制器
def create
@amount = current_user.amounts.build(params[:amount])
respond_to do |format|
if @amount.save
format.html { redirect_to root_url, :notice => 'Amount was successfully created.' }
format.json { render :json => @amount, :status => :created, :location => @amount }
else
format.html { render :action => "new" }
format.json { render :json => @amount.errors, :status => :unprocessable_entity }
end
end
end
def new
@amount = Amount.new
respond_to do |format|
format.html
format.json { render :json => @amount }
end
end
付款模式
belongs_to :amount
金额模型
has_many :payments
答案 0 :(得分:0)
根据指南手册,“过滤器不在控制器的范围内运行”,因此@amount
实际上是在某些ActiveSupport::Callbacks::Callback
中设置变量而不是您预期的控制器。
我认为你可以通过将lambda
放在你的小块前面来解决这个问题。如果没有,您必须定义:set_amount
方法并将代码放在那里。
参考文献:
How does rails implement before_filter?
http://guides.rubyonrails.org/action_controller_overview.html
希望有所帮助。