文档说明
options_from_collection_for_select(collection, value_method, text_method, selected = nil)
必须包含respond_to?
value_method
和text_method
的元素。
如果我的collection
是一个哈希数组并且我需要为value_method
和text_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
元素上调用哈希键方法或其他辅助方法?
答案 0 :(得分:1)
options_from_collection_for_select(collection, value_method, ->(element) { I18n.interpolate("car.mileage",mileage: element[:mileage]) })
:value_method和:text_method参数是要在集合的每个成员上调用的方法。返回值分别用作每个复选框标记的值属性和内容。它们也可以是响应调用的任何对象,例如proc,将为集合的每个成员调用以检索值/文本。