2011-01-24 2 views
0

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

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

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

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

ответ

1

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

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

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

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

Or возможно:

@object.attributes.values[userInput.to_i] 
Смежные вопросы