0

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

在 simple_form_for文档的 Collections 部分中,它谈到了 a label_method,我想它会解决问题。 你能提供一个使用这种方法的例子吗?

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

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

...

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

...

这就是我得到的:

在此处输入图像描述

4

1 回答 1

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] }
于 2014-03-09T13:05:59.833 回答