Ruby 2.6.5 Rails 6.0.3.4 MySQL Visual Studio Code (GoogleChrome)
Ich mache so etwas wie eine Kalender-App. Ich möchte das Datum und die Start- / Endzeit separat in der Datenbank speichern, daher habe ich ein Formular mit "time_select" in der Spalte "Zeittyp" für die Uhrzeit erstellt.
new.html.erb(Auszug nur für Zeitform)
<div class="start-date-input">
<div class="form-title">
Startzeit
<span class="indispensable">Verpflichtend</span>
</div>
<div class='input-date-wrap'>
<%= f.time_select(:start_time, {class:'select-date', id:"start-time", prompt:'--', time_separator: ':'}, ignore_data: true) %>
</div>
</div>
<div class="start-date-input">
<div class="form-title">
Endzeit
<span class="indispensable">Verpflichtend</span>
</div>
<div class='input-date-wrap'>
<%= f.time_select(:start_time, {class:'select-date', id:"start-time", prompt:'--', time_separator: ':'}, ignore_data: true) %>
</div>
</div>
Wenn Sie Datum und Uhrzeit wie oben in das Formular eingeben und die Daten als Testversion einreichen,
Es scheint, dass Datum und Uhrzeit sowie jedes Mal sicher in der Datenbank gespeichert sind. Wenn ich dann versuche, es in der Ansicht anzuzeigen ...
show.html.erb
<div class="event-show-info-left">
<p><%= @event.day %></p>
<p><strong><%= @event.start_time %></strong></p>
<p><strong>↓</strong></p>
<p><strong><%= @event.finish_time %></strong></p>
</div>
!!!?!!!?
Das mysteriöse Jahr und der mysteriöse Monat werden ebenfalls für jedes Mal angezeigt ... Wer zum Teufel ist dieses Kind des 20. Jahrhunderts ...
Einmal habe ich die Parameter der übertragenen Daten überprüft.
[1] pry(#<EventsController>)> params
=> <ActionController::Parameters {
(Kürzung)
"day(1i)"=>"2020", "day(2i)"=>"12", "day(3i)"=>"2",
"start_time(1i)"=>"1", "start_time(2i)"=>"1", "start_time(3i)"=>"1", "start_time(4i)"=>"10", "start_time(5i)"=>"00",
"finish_time(1i)"=>"1", "finish_time(2i)"=>"1", "finish_time(3i)"=>"1", "finish_time(4i)"=>"13", "finish_time(5i)"=>"30",
(Kürzung)
} permitted: false>
(1i)… Jahr (2i)… Monat (3i)… Sonne (4i)… Zeit (5i)… Minuten Wie Sie sehen können, wird das Datum zusammen mit jeder Zeit angegeben.
Da dies Zeit spart, habe ich es zu einem Zeittyp gemacht, damit es nicht in der Datenbank angezeigt wird. Als Spezifikation von "time_select" kann davon ausgegangen werden, dass es mit "1" behandelt wird, das dem Datum hinzugefügt wird. Diese "1" wird so wie sie ist in die Ansicht abgerufen, was die Ursache für das Beispiel "2000-01-01" zu sein scheint.
** Wie bekommst du dann nur die Zeit ...? ~ **
Ich möchte etwas auf der Ansichtsseite erfinden. Ich überprüfte ...
[Official] Ruby 2.7.0 Referenzhandbuch Instanzmethode Time # strftime
strftime(format) -> String Gibt das Ergebnis der Konvertierung der Zeit in eine Zeichenfolge gemäß der Formatzeichenfolge zurück.
In Bezug auf das oben Gesagte scheint "strftime" eine aktive Rolle zu spielen! Verwenden Sie "strftime" für die Startzeit- / Endzeitklasse und formatieren Sie sie in eine Zeichenfolge.
Da wir nur die Zeit bekommen, verwenden wir das folgende Format.
-% H: 24-Stunden-System (00-23) -% M: Minuten (00-59)
Ich habe der Ansichtsdatei ".strftime ("% H:% M ")" hinzugefügt.
show.html.erb(Fix)
<div class="event-show-info-left">
<p><%= @event.day %></p>
<p><strong><%= @event.start_time.strftime( "%H:%M" ) %></strong></p>
<p><strong>↓</strong></p>
<p><strong><%= @event.finish_time.strftime( "%H:%M" ) %></strong></p>
</div>
Es konnte nur die Uhrzeit angezeigt werden !!
strftime
und time_select
waren eine tolle Kombination!
In Bezug auf den Umgang mit Zeit, wenn es um eine groß angelegte Implementierung in der Zukunft geht Ich hatte auch das Gefühl, dass besondere Überlegungen wie Zeitzone und Nebenjahr erforderlich sind. Ich möchte diese Gelegenheit nutzen, um mein Verständnis für Zeitklassen zu vertiefen.
Dies ist ein schlechter Artikel für Anfänger, aber ich hoffe, er wird Ihnen helfen. Vielen Dank für das Lesen bis zum Ende.
11/11 21:40
In Bezug auf das Datums- und Zeitformat wurde ich unter dem Gesichtspunkt von DRY angewiesen, dass es besser ist, der Zeitzone und dem Gebietsschema sowie der l
-Methode zu entsprechen.
Bitte beachten Sie den Artikel unten.
Vielen Dank, dass Sie @jnchito!
[Official] Ruby 2.7.0 Referenzhandbuch Instanzmethode Time # strftime
[[Offiziell] Ruby on Rails 6.0.3.4 Modul ActionView :: Helpers :: DateHelper](https://api.rubyonrails.org/v6.0.3.4/classes/ActionView/Helpers/DateHelper.html#method-i- date_select)
[Qiita] Zeigt den Wert der Zeittypdaten nur für den Zeitteil an
[Hatena Blog] Lassen Sie time_select nur time [Rails] eingeben.
Recommended Posts