Rails - 根据用户输入选择对象属性

时间:2011-01-24 02:26:34

标签: ruby-on-rails ruby ruby-on-rails-3

如何根据用户输入选择特定属性?

例如,假设我有以下Object表,其中包含属性'name','shape','color'。我正在尝试根据用户输入选择属性。例如,如果用户输入“1”,则应返回第一个属性“name”的值。

有没有办法在不使用if语句对所有选项进行硬编码的情况下执行此操作?我的对象有28个属性,因此所有这些if语句似乎都过多。

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

1 个答案:

答案 0 :(得分:1)

我必须认为这不是实现目标的好方法,而是回答你提出的问题:

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

或者也许:

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

或者也许:

@object.attributes.values[userInput.to_i]