Выпадающий список 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.
Ответ 3
Попробуйте следующее:
<%= select_tag(:week_day, options_for_select([['Sunday', 'Sun'], ['Monday', 'Mon'], ...])) %>
См. http://guides.rubyonrails.org/form_helpers.html#theselectandoptionstag