Rails - выберите атрибут объекта на основе пользовательского ввода - PullRequest
0 голосов
/ 24 января 2011

Как бы я выбрал определенный атрибут на основе пользовательского ввода?

Например, скажем, у меня есть следующая таблица объектов с атрибутами «имя», «форма», «цвет». Я пытаюсь выбрать атрибут на основе пользовательского ввода. Например, если пользователь вводит «1», он должен вернуть значение первого атрибута «имя».

Есть ли способ сделать это без жесткого кодирования всех параметров с помощью операторов if, как показано ниже? У меня есть 28 атрибутов для моего объекта, поэтому я делаю все это, если утверждения кажутся чрезмерными.

if userInput == '1'
return @object.name
end

1 Ответ

1 голос
/ 24 января 2011

Мне нужно подумать, что это не хороший способ достижения вашей реальной цели, но чтобы ответить на заданный вами вопрос:

return @object.send @object.attribute_names[userInput.to_i]

Или, возможно:

@object.send %w{fieldname anotherfield yetanotherfieldname}[userInput.to_i]

Иливозможно:

@object.attributes.values[userInput.to_i]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...