我的表单包含两个输入折扣的选项。
下拉:
<%= f.collection_select(:discount, Warehouse.where(product: sale.product), :discount, :discount, {prompt:true}, {class: 'form-control'}) %>
从外国表(仓库)收集数据并询问discount
记录的product
。
文本字段:
<%= f.text_field :discount, class: "form-control", placeholder: "e.g. 99.00" %>
可手动输入任何值。
一些JavaScript魔术确保一次只能看到其中一个表单字段。隐藏的表单字段接收值&#34;禁用&#34;。
我的问题:只有当我提交文本字段(而不是下拉列表)时才会保存正确的值。当我尝试从下拉列表nil
提交值时,无论我是否将其保留在&#34;请选择&#34;或者让我们说值99.00。
这是我的模特:
class Sale < ActiveRecord::Base
before_create :calc_discount
def calc_discount
if discount.present?
discount = self.discount.strip.sub(',', '.').to_f
write_attribute(:discount, discount) unless destroyed?
else
discount = nil
write_attribute(:discount, discount) unless destroyed?
end
end
end
我不明白为什么循环越过第一个if子句,即使我从下拉列表中选择一个值。
你有什么想法吗?