В Rails / Formtastic как ограничить часы в поле ввода времени - PullRequest
0 голосов
/ 28 июня 2011

У меня есть требование отображать продолжительность в формате ЧЧ: ММ в Rails как два поля выбора, одно для часов, а другое для минут. Ограничьте часы максимум до 4:00. 'duration' (тип столбца: целое число) хранится в базе данных в виде минут. И я использую formtastic.

Если я отображаю ввод как время, я могу получить формат вывода как выпадающий ЧЧ: ММ.

"<% = f.input: duration,: label => 'Duration',: as =>: time,: minute_step => 15,: hint =>" Измерено в часах ",: end => 10% > "

Как ограничить показанные часы для выбора (в выпадающем списке часов должны отображаться только 01, 02, 03, 04)?

Пожалуйста, дайте мне знать, если есть какие-либо параметры, которые должны быть указаны для Rails / Formtastic. Или есть лучший способ справиться с этим сценарием?

1 Ответ

1 голос
/ 28 июня 2011

Я не вижу вариантов ограничить это через Formtastic. Вы можете просто отобразить ввод как выборку и передать ему параметры, которые вы хотите явно.

<%= f.input :hours, :as=>:select, :collection => (0..4) %>
<%= f.input :minutes, :as=>:select, :collection => [0,15,30,45] %>

Тогда вам, вероятно, потребуется добавить следующие виртуальные атрибуты в модель:

before_save :set_duration

def set_duration
  self.duration = @hours * 60 + @minutes
end

def hours
  self.duration / 60;
end

def minutes
  self.duration % 60;
end

def hours=(h)
  @hours = h
end

def minutes=(m)
 @minutes = m
end

def duration=(d)
  @hours = d / 60
  @minutes = d % 60
  self.set_duration
end

И, возможно, вы захотите взглянуть на этот ответ , чтобы они выглядели больше как оригинал.

Может быть, есть какой-нибудь умный, более быстрый способ сделать это, но это первое, что приходит на ум.

...