Ruby on rails 3 значения блока выбора объединены готовы для проверки, это возможно? - PullRequest
0 голосов
/ 13 августа 2011

Я создал пользовательское поле date_Select, используя 3 отдельных поля выбора:

<%= f.select :day, options_for_select(User::DAYS), :include_blank => "Day:" %>
<%= f.select :month, options_for_select(User::MONTHS), :include_blank => "Month:" %>
<%= f.select :year, options_for_select(User::YEAR_RANGE), :include_blank =>"Year:" %>

В моем User.rb (Модель) у меня есть это правило проверки, а также используется камень validates_timelessness:

  MONTHS = ["January", 1], ["February", 2]..etc
  DAYS = ["01", 1], ["02", 2], ["03", 3]..etc
  START_YEAR = Time.now.year - 111
  END_YEAR = Time.now.year
  YEAR_RANGE = START_YEAR..END_YEAR

validates :birthday,   :timeliness  => {:on_or_before => lambda { Date.current }, :type => :date, :on_or_before_message => "Select a valid birthday"} 

Я создал несколько тестов, которые прекрасно работают с date_select, который поставляется с rails, но этот date_select содержит ошибки, поэтому я выбрал собственный. Моя единственная проблема сейчас заключается в том, что я хочу, чтобы день, месяц и год работали с моим: днем ​​рождения символом. Как объединить все 3, чтобы символ my: birthday мог использовать выбранные данные? Если это имеет смысл ...

Параметр date_select был бы идеальным, но он позволяет пользователям отправлять форму без указания даты, и если пользователь выбирает 1 на день и нажимает кнопку «Отправить», он автоматически выбирает январь. Я не нашел способ обойти это.

Так что я использую 3 отдельных поля выбора, с которыми я хочу объединить и сделать работу: день рождения точно так же, как и date_select.

Помощь приветствуется.

Ответы [ 2 ]

0 голосов
/ 13 августа 2011

select_date не глючит, вам нужно выполнить необходимую проверку данных с вашей стороны, чтобы пустой год не допускался.Проверка предназначена для того, чтобы вы могли указать, какие данные разрешены в вашем приложении.Только вы можете быть привратником того, что считается «действительным».

0 голосов
/ 13 августа 2011

Я бы порекомендовал использовать всплывающее окно выбора даты.

Доступно несколько драгоценных камней.Я использовал тот, который подробно описан в http://www.rubyinside.com/calendar-date-select-a-lightweight-prototype-based-datetime-picker-for-rails-developers-573.html с успехом.

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

...