我有一个Rails 4.0.2控制器动作,由方法提交调用。在此方法中,我检查特定字段以匹配条件,如果不匹配,我想向用户显示错误并再次调用render new,而不在方法中进一步。所以我写道:
discount_coupon = DiscountCoupon.where(code: discount_code).first
if discount_coupon.nil? || (discount_coupon.present? && !discount_coupon.currently_active?)
flash[:alert] = t("flash.entries.create.invalid_coupon_code")
render :new
return
end
@entry.save
所以,在我的应用程序中,当discount_coupon
变量错误并且程序进入条件时,它应该停止在return
上执行,但不知何故它没有,@entry.save
方法是打电话给搞砸了整个事情。
我做错了什么?我感谢任何帮助!
答案 0 :(得分:0)
为什么不用@ else.save包含else条件并删除return?因此,如果折扣优惠券条件失败,则会呈现操作:新的其他只会保存条目。
答案 1 :(得分:0)
根据建议,请尝试if/else
条件:
discount_coupon = DiscountCoupon.where(code: discount_code).first
if discount_coupon.nil? || (discount_coupon.present? && !discount_coupon.currently_active?)
flash[:alert] = t("flash.entries.create.invalid_coupon_code")
render :new
else
@entry.save
end
一旦确定它正常工作,您就可以重构此代码。