从rails中的模型中的数组中获取值

时间:2010-05-22 20:22:22

标签: ruby-on-rails arrays activerecord views

我有一个相对简单的问题。我有一个名为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的文本。

有关如何使其发挥作用的任何想法?有没有更好的方法来解决这个问题?

非常感谢, 贝

1 个答案:

答案 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"