Rails:Drop-Down的值总是为零

时间:2016-02-16 14:06:55

标签: ruby-on-rails

我的表单包含两个输入折扣的选项。

  • 通过下拉列表或
  • 通过文字字段

下拉:

<%= 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子句,即使我从下拉列表中选择一个值。

你有什么想法吗?

0 个答案:

没有答案