如何使用辅助方法从options_from_collection_for_select访问元素

时间:2016-09-13 14:32:00

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

文档说明 options_from_collection_for_select(collection, value_method, text_method, selected = nil)必须包含respond_to? value_methodtext_method的元素。

如果我的collection是一个哈希数组并且我需要为value_methodtext_method使用一些帮助方法怎么办?

例如,

collection = [{
                model: "LaF"
                year: 2016,
                mileage: 1230
             },
             {
                model: "P1",
                year: 2015,
                mileage: 1311
             },
             {
                model: "918",
                year: 2015,
                mileage: 2448
             }

例如:我希望能够在每个元素的I18n.interpolate("car.mileage",mileage: element[:mileage])键上使用model方法。

TL; DR:如何在options_from_collection_for_select元素上调用哈希键方法或其他辅助方法?

1 个答案:

答案 0 :(得分:1)

options_from_collection_for_select(collection, value_method, ->(element) { I18n.interpolate("car.mileage",mileage: element[:mileage]) })

:value_method和:text_method参数是要在集合的每个成员上调用的方法。返回值分别用作每个复选框标记的值属性和内容。它们也可以是响应调用的任何对象,例如proc,将为集合的每个成员调用以检索值/文本。