0

как я могу ввести или выбрать время, не получив подобное => «2000-01-01 08:00:00», если я выберу 08:00, выход должен быть «08: 00AM» в базе данных .. пользователь необходимо ввести только время ...Как я могу ввести время, не получая этого, -> «2000-01-01 08:00:00»?

new.html.rb

<%= form_for @search, html: {class: "pure-form"} do |s| %> 
    <%= s.time_select :search %> 
<% end %> 

schema.rb

create_table "searches", force: :cascade do |t| 
t.time  "search" 
t.datetime "created_at", null: false 
t.datetime "updated_at", null: false 
end 
+0

Проблема @MichaelGaskill отредактирована/обновлена. –

+0

просто конвертируйте свою дату после получения ее из базы данных. сохранение даты и времени как строки не имеет смысла. –

ответ

0
require 'date' 

date = DateTime.parse("2000-01-01 08:00:00") 
formatted_date = date.strftime('%I:%M%p') 
0

Ruby and Rails не имеют данных, которые определяли бы только временную долю дня. Даже Time class в Ruby определяется как «абстракция дат и времени». Таким образом, внутри вашего кода rails вы всегда будете видеть время как часть даты по умолчанию, которая (1 января 2000 года).

Однако, поскольку используется столбец типа time данных в базе данных, дата часть DateTime будет выброшена при хранении и только время будет храниться действительно.

Итак, вся проблема, я думаю, только в том, что нужно мысленно игнорировать часть даты из-за времени в вашем Rails-коде. В слое просмотра, а также в DB это должно быть правильно.

 Смежные вопросы

  • Нет связанных вопросов^_^