#ruby-on-rails #date
#ruby-on-rails #Дата
Вопрос:
ВСЕ,
Я новичок в RoR и, следовательно, нуждался в некотором руководстве по использованию поля даты.
Предыстория:
1 > Я создаю объект модели, используя rails generate scaffold <Model> name:string remainderDate: date
2 > Теперь, когда я развернул модель в БД с помощью rake db:migrate
и при открытии URL: localhost:3000/<Model>s/new
, отображаемое поле даты находится в формате ГГГГ ММ ДД, все 3 отдельных поля с выпадающим списком с
Значения ГГГГ >=2006 и <=2016
ММ>= январь и <= декабрь (очевидно)
Значения DD >= 1 и <=31
Вопрос 1:
1> Где находится код для установки значений в эти поля?
2> Могу ли я изменить формат на ММ ДД ГГГГ?
3> Могу ли я ограничить значения, добавляемые в список? т. е. для текущего 2011 года должны отображаться только месяцы, начинающиеся с апреля, и должны отображаться только даты, начинающиеся с текущего дня
4> Где я могу изменить отображаемый текст для new
формы? Я открыл new.html.erb
и не смог понять, где задан отображаемый текст. Я также открыл _form.html.erb
и не смог найти, где можно внести необходимые изменения?
Ответ №1:
Взгляните на синтаксис date_select: http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-date_select
В вашей форме у вас было бы что-то вроде этого:
<%= f.date_select :remainderDate, {:order => [:month, :day, :year],:prompt => true, :start_year => Time.now.year, :end_year => 2016} %>
Итак, ответы на ваши запросы:
1/ как ответил Уэс
2/ параметр : порядок в моем примере
3/ вы можете ограничить только год, а не месяцы или даты с помощью параметров, которые вы видите с start_year и end_year в примере. Вы могли бы дополнительно ограничить использование проверок в вашей модели.
4/ что именно вы имеете в виду под «отображаемым текстом для новой формы»? Вы имеете в виду отображаемый текст для поля даты? Это должно быть рядом с <%= f.label %>
Ответ №2:
Что касается форматов поля даты, вы хотите передать строку так, как rails уже есть, потому что mysql принимает ее без изменений. Тем не менее, вы, безусловно, можете изменить способ ввода пользователем данных в форму для новой записи. Найдите код представления в
app/views/<model>/_form.html.erb
Комментарии:
1. Ну, я не видел, чтобы формат указывался ни в одном из
html.erb
файлов. В частности, это то, что я вижу вnew.html.erb
:<h1>New <Model></h1> <%= render 'form' %> <%= link_to 'Back', <model>s_path %>
2. На самом деле это _form.html.erb, а не new.html.erb, на который вы захотите взглянуть. Вы увидите
date_select
. Замените это своим собственным кодом для сбора даты.3. @Brian Да, я все время забываю о строительных лесах. Спасибо за комментарий. Я обновил ответ.