Непонятно, что вы пытаетесь выполнить, но если бы я должен был догадаться, я бы сказал, что вы пытаетесь создать какую-то систему CMS или отчетности, в которой определение того, какие данные для отображения могут быть изменены через пользовательский интерфейс. Есть драгоценности для такого рода вещей, но видя, как вы на этом треке ...
От: human_attribute_name Предполагаю, вы имеете в виду дружественное имя, которое будет отображаться на странице в качестве метки. Прежде всего, было бы более целесообразно использовать строку, а не символ, поскольку тогда вы можете использовать пробелы и больше символов. Предполагая, что вы никогда не намереваетесь дублировать имена ярлыков на той же веб-странице, вы можете попробовать использовать хеш вместо массива.
fields = {
"Field One" => "field_one" ,
"Field Two" => "field_two" ,
"Field One Of Some Association" => "some_association.field_one"
}
, а затем введите данные так же, как показано в ответе, на который вы ссылались.
data = {}
fields.each_pair do | friendly_name, attribute |
data[friendly_name] = if attribute.include?('.')
attribute.split('.').inject(some_object, :send)
else
some_object.send(attribute)
end
end
Это должно оставить вас с хэша вы можете петлю над на ваш взгляд, как этот
{
"Field One" => "Mr" ,
"Field Two" => "Data",
"Field One Of Some Association" => "A Friend Of Mr Data"
}
Так что у вас есть работает вы можете уточнить, что вы подразумеваете под «Кроме того, хотя, мне нужно позвонить : human_attribute_name в правильном классе для создания меток ". Я не знаю, что такое «правильный» класс или что вы подразумеваете под «ярлыками», пожалуйста, объясните проблему, с которой вы столкнулись, а не проблему, которую вы уже решили. – engineersmnky