simple_form_for自定义label_for

时间:2014-03-09 11:45:32

标签: ruby-on-rails simple-form-for

我有一个必须为会计应用程序提供一些小数值(百分比)的选择 值类似于10,20,22.5。 问题是想要显示前两个没有小数部分的值,第三个用它来显示。

在simple_form_for documentation中,在Collections部分中,它讨论了label_method,我猜它会解决问题。 您能提供一个使用此类方法的示例吗?

这就足够了,但为了清楚起见,我的simple_form_for是这样的:

<%= simple_form_for(@company) do |f| %>

...

<%= f.input :percentage, :collection=>[BigDecimal(10),BigDecimal(20),BigDecimal(22.5,3)]%><br />

...

这就是我得到的:

enter image description here

1 个答案:

答案 0 :(得分:1)

汇总,label_method允许您定义一个方法,该方法为给定集合中的每个项目调用,其结果用于显示项目

您可以将符号作为标签方法,例如

label_method: :method_to_be_called

或者您定义了适当的方法,例如

label_method: lambda { |value| calculated_label }

在您的情况下,我会将集合定义为

[ [BigDecimal(10), 0], [BigDecimal(20), 0], [BigDecimal(22.5, 3), 2] ]

,label_method为

label_method: lambda { |value| number_with_precision(value[0], precision: value[1]) }

您可能还需要value_method,将正确的结果返回给您的服务器,例如

value_method: lambda { |value| value[0] }