Получение значения из массива в модели в рельсах - PullRequest
0 голосов
/ 23 мая 2010

У меня относительно простая проблема. У меня есть модель с именем Item, в которую я добавил поле состояния. Поле состояния будет иметь только две опции (Потерянный или Найденный). Итак, я создал следующий массив в моей модели Item:

STATUS = [ [1, "Lost"], [2, "Found"]]

В виде формы я добавил следующий код, который прекрасно работает:

<%= collection_select :item, :status, Item::STATUS, :first, :last, {:include_blank => 'Select status'}  %>

Хранит числовой идентификатор (1 или 2) статуса в базе данных. Однако в моем представлении шоу я не могу понять, как преобразовать числовой идентификатор (опять же, 1 или 2) в текстовый эквивалент Lost or Found.

Есть идеи, как заставить это работать? Есть ли лучший способ сделать это?

Большое спасибо, Tony

1 Ответ

3 голосов
/ 23 мая 2010

Вы можете определить метод в вашей модели Item:

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...