0

Wie kann ich die Zeit eingeben oder auswählen, ohne das Ergebnis zu ändern => "2000-01-01 08:00:00" Wenn ich 08:00 Uhr wähle, muss die Ausgabe '08: 00AM 'in der Datenbank..der Benutzer sein muss nur die Zeit Eingang ...Wie kann ich eine Zeit ohne Ergebnis eingeben -> "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 Problem bearbeitet/aktualisiert. –

+0

konvertieren Sie einfach Ihr Datum, nachdem Sie es aus der Datenbank bekommen haben. Das Speichern von Datetime als String macht überhaupt keinen Sinn. –

Antwort

0
require 'date' 

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

Ruby und Rails haben keinen Datentyp, der nur den Zeitanteil eines Tages definiert. Sogar die Time class in Ruby ist definiert als "eine Abstraktion von Daten und Zeiten". Also, innerhalb Ihres Schienencodes sehen Sie immer die Zeit als Teil des Standarddatums, das (1. Januar 2000) ist.

jedoch, da Sie die time Datentyp Spalte in Ihrer Datenbank verwenden, wird das Datum Teil des Datetime weggeworfen, wenn sie gespeichert und nur die Zeit wird tatsächlich gespeichert werden.

Also, das ganze Problem ist, denke ich, nur über die Notwendigkeit, den Datumsteil der Datetimes in Ihrem Rails-Code mental zu ignorieren. In der Ansichtsschicht, sowie DB sollte es korrekt sein.

Verwandte Themen