Используйте Rails select_month и select_year для захвата и сохранения дат - PullRequest
1 голос
/ 15 февраля 2010

Я хотел бы использовать два списка выбора для контроля ввода в поле даты; Меня интересует месяц и год, а не день. Пока у меня есть следующее:

<tr>
  <td>Date Range:</td>
  <td>
    <%= select_month(Date.today, :field_name=>"dateStarted") %>
    <%= select_year(Date.today, :field_name=>"dateStarted") %>
    &nbsp;to&nbsp;
    <%= select_month(Date.today, :field_name=>"dateEnded") %>
    <%= select_year(Date.today, :field_name=>"dateEnded") %>
  </td>
</tr>

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

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

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

Ответы [ 2 ]

2 голосов
/ 16 февраля 2010

Почему бы просто не использовать date_select (вместо select_month и select_year)

date_select("dateRange","dateStarted", {:default => Date.today, :discard_day => true})
date_select("dateRange","dateEnded", {:default => Date.today, :discard_day => true})

Это создаст параметры dateRange [dateStarted] и dateRange [dateEnded] с дополнительными параметрами для года и месяца.

Еще одно уточнение: чтобы оно работало без проблем с действием создания и обновления, вы должны заменить «dateRange» на фактическое название модели. Таким образом, он будет правильно встроен в хеш параметра

0 голосов
/ 24 ноября 2015

Если вы используете простую форму в своем приложении rails, то вы можете сделать что-то вроде:

= simple_form_for(resource) do |f|
  // ...
  = f.input :date_started, discard_day: true, end_year: Date.today.year, order: [:month, :year]
  = f.input :date_ended, discard_day: true, end_year: Date.today.year, order: [:month, :year]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...