simple_form_for пользовательская метка_for
У меня есть выбор, который должен предоставить некоторые десятичные значения (проценты) для бухгалтерского приложения.
Значения равны 10, 20, 22,5. Проблема в том, что хотят отображать первые два значения без десятичной части, третье с ним.
В документации simple_form_for, в разделе Коллекции, говорится о label_method
и я думаю, это решит проблему. Можете ли вы привести пример использования такого метода?
Этого было бы достаточно, но для ясности мой simple_form_for выглядит примерно так:
<%= simple_form_for(@company) do |f| %>
...
<%= f.input :percentage, :collection=>[BigDecimal(10),BigDecimal(20),BigDecimal(22.5,3)]%><br />
...
И вот что я получаю:
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: lambda { |value| number_with_precision(value[0], precision: value[1]) }
Вам, вероятно, также нужен метод value_method, возвращающий правильный результат на ваш сервер, что-то вроде
value_method: lambda { |value| value[0] }