在我的发票模型中,我有一个名为'折扣'的属性。它是一个浮点值,通常以5%(0,5,10,15 ......)为增量。我使用float而不是简单的整数,因为面向未来。
所以无论如何,在我的表单中,我填充了一个下拉选择框,其值介于0到50之间,但是当我编辑以前保存的发票时,表单选择方法不会选择记录的数量。
形式:
f.select :discount, options_for_select((0..50).step(5).map {|x| ["#{ x }%", x.to_f]}), {}, {:style => 'padding-right:0; margin-right:0', :tabindex => -1}
我只用x
代替x.to_f
尝试了此操作,我也尝试了'%.2f' % x
,但无论我将其放入何种格式,它都不会自动设置正确的%折扣选项。
结果HTML:
<select id="invoice_discount" name="invoice[discount]" style="padding-right:0; margin-right:0" tabindex="-1" data-cip-id="cIPJQ342845641">
<option value="0.0">0%</option>
<option value="5.0">5%</option>
<option value="10.0">10%</option>
<option value="15.0">15%</option>
<option value="20.0">20%</option>
<option value="25.0">25%</option>
<option value="30.0">30%</option>
<option value="35.0">35%</option>
<option value="40.0">40%</option>
<option value="45.0">45%</option>
<option value="50.0">50%</option>
</select>
检查当前发票的折扣......
@invoice.discount
收益15.0
所以我知道要使用的表单的数据,但它只是没有选择选项标签,我认为它与浮动格式的折扣有关,但我该怎么办?
答案 0 :(得分:0)
试试这个:
f.select :discount, (0..50).step(5).map{|x| ["#{ x }%", x.to_f]}, {}, {:style => 'padding-right:0; margin-right:0', :tabindex => -1}
使用options_for_select时,必须将当前值传递给它。