我正在检查我的应用程序并确保它正确响应验证问题。在这种特殊情况下,当创建一个新的交货单时,您必须在创建一个时使用一个唯一的编号。我发现当我输入重复号码时,系统会显示错误。
错误是:
undefined method `purchase_request_fundings' for nil:NilClass
我明白为什么会发生这个错误,但我不明白如何解决它。发生该错误是因为在应用程序发现验证错误后,它会尝试将用户踢回交付订单新功能,并显示友好的错误消息以显示给用户,但是,@purchase_request 对象在它被实例化时没有使用任何数据回到新功能。我认为它没有看到正确查找和设置对象所需的参数,因此对象 - @purchase_request - 保留为零。
我的代码:
Controller
def new
@delivery_order = DeliveryOrder.new(:purchase_request_id => params[:purchase_request])
@purchase_request = PurchaseRequest.find(@delivery_order.purchase_request_id)
end
def create
@delivery_order = DeliveryOrder.new(params[:delivery_order])
respond_to do |format|
if @delivery_order.save
params[:discrete_tasks].each do |key, value|
DeliveryOrderFunding.create(
:delivery_order_id => @delivery_order.id,
:discrete_task_id => key,
:amount => value
)
end
format.html do
flash[:success] = "Delivery Order was succesfully created"
redirect_to @delivery_order
end
else
format.html { render action: "new" }
end
end
end
查看包括
= hidden_field_tag 'delivery_order[purchase_request_id]', params[:purchase_request]
也试过
= hidden_field_tag :purchase_request, params[:purchase_request]