我有一个相对简单的问题。我有一个名为Item的模型,我添加了一个状态字段。状态字段只有两个选项(Lost或Found)。所以我在Item模型中创建了以下数组:
STATUS = [ [1, "Lost"], [2, "Found"]]
在我的表单视图中,我添加了以下代码,效果很好:
<%= collection_select :item, :status, Item::STATUS, :first, :last, {:include_blank => 'Select status'} %>
这将状态的数字id(1或2)存储在数据库中。但是,在我的节目视图中,我无法弄清楚如何从数字ID(再次,1或2)转换为等同于Lost或Found的文本。
有关如何使其发挥作用的任何想法?有没有更好的方法来解决这个问题?
非常感谢, 贝
答案 0 :(得分:3)
您可以在项目模型中定义方法:
class Item < ActiveRecord::Base
#
def status_str
Item::STATUS.assoc(status).last
end
end
并使用它:
item.status_str # => "Lost" (if status == 1)
或者您可以查看enum_fu插件:
class Item < ActiveRecord::Base
#
acts_as_enum :status, ["Lost", "Found"]
end
然后item.status
为您提供字符串值:
item.status # => "Lost"