未选择Rails选择标记选项(使用浮点数据)

时间:2014-02-02 17:26:30

标签: ruby-on-rails ruby-on-rails-4

在我的发票模型中,我有一个名为'折扣'的属性。它是一个浮点值,通常以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

所以我知道要使用的表单的数据,但它只是没有选择选项标签,我认为它与浮动格式的折扣有关,但我该怎么办?

1 个答案:

答案 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时,必须将当前值传递给它。