我有一个Rails 5应用程序。
我有一个带有create方法的订单控制器,可以保存来自表单提交的新订单。订单的一个字段是邮政编码,在我的创建方法中,我使用邮政编码来计算运费。
def create
@order = Order.new(order_params)
shipping = calculateShipping(@order.zip)
...
end
我需要每个订单的邮政编码,以便在订单模型中进行验证
validates :zip, presence: true
如果我现在提交没有邮政编码的订单,我会从calculateShipping收到错误,因为它错过了邮政编码。
谢谢!
答案 0 :(得分:0)
您可以这样做:尝试从参数创建订单,如果不成功,则重新显示新表单(有错误)。
def create
@order = Order.new(order_params)
@order.calc_shipping
if @order.save
redirect_to @order, notice: 'Order was successfully created.'
else
render :new
end
end
在订单模型中,您可以使用方法计算运费
def calc_shipping
self.shipping = ...
end