Выпадающий список Rails без таблиц

Мне нужно иметь раскрывающийся список, в котором пользователь выбирает день недели, в который они хотят войти каждую неделю. Значения никогда не изменятся правильно. Это просто воскресенье, понедельник, суббота? Кажется, что больше работы, чем нужно, для создания таблицы и ввода дней недели. Мне, конечно, не нужна возможность создавать, обновлять или удалять их. Есть ли простой способ справиться с чем-то подобным? Или, может быть, вместо дней недели это может быть статус, как, парк, реверс, нейтраль, диск. Главное, чтобы ценности никогда не изменились. Их всего лишь несколько. Так зачем составлять таблицу? Я думаю, что есть способ создать модель, в которой уже есть данные, но я мог ошибаться.

Ответы

Ответ 1

Зачем создавать модель? Просто используйте select.

DAYS = ['Monday', 'Tuesday', 'Wednesday', ...]
select(:event, :day, DAYS)

Обычно лучше использовать константу в соответствующей модели и использовать ее оттуда.

В вашей модели:

class Event < ActiveRecord::Base
  DAYS = ['Monday', 'Tuesday', 'Wednesday', ...]
end

а затем, на ваш взгляд:

select(:event, :day, Event::DAYS)

и вот еще один трюк, который я использую много:

select(:event, :day, Event::DAYS.collect {|d| [d, Event::DAYS.index(d)]})

Ответ 2

Обратите внимание, что Ruby имеет английские имена для дней недели, уже встроенных в свой класс даты. Вы должны попытаться использовать это, если сможете. Здесь rdoc.

Затем, как предположил Can, просто выполните следующие действия:

select(:event, :day, Date::DAYNAMES)

Имейте в виду, что это решение НЕ особенно приветствуется. Если i18n является проблемой, я также рассмотрю локальный плагин дат и изменения, внесенные в Rails 2.2 для поддержки i18n.