2016-09-13 2 views
0

Документов состояние options_from_collection_for_select(collection, value_method, text_method, selected = nil) должны иметь элементы, которые respond_to?value_method и text_method.Как использовать вспомогательные методы доступа к элементам из options_from_collection_for_select

Что делать, если мой 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
options_from_collection_for_select(collection, value_method, ->(element) { I18n.interpolate("car.mileage",mileage: element[:mileage]) }) 

Параметры: value_method и: text_method - это методы, которые должны быть вызваны для каждого члена коллекции. Возвращаемые значения используются как атрибут значения и содержимое каждого тега флажка, соответственно. Они также могут быть любыми объектами, которые отвечают на вызов, например, proc, который будет вызываться для каждого члена коллекции для получения значения/текста.

Смежные вопросы