Meine App verwendet bootstrap3-datetimepicker
zur Anzeige der Uhrzeit (Stunde und Minute).Rails: Falsche Uhrzeit wird mit bootstrap3-datetimepicker angezeigt
Die Zeit kann in der Tabelle korrekt gespeichert werden und kann in der Ansicht show
angezeigt werden.
Aber falsche Zeit wird angezeigt, wenn ich versuche, zu bearbeiten. Obwohl der Minit korrekt ist, ist die Stunde falsch (immer 20 Uhr).
Zum Beispiel
DB: 04:01:00
Ausblick: 8:01 PM
(Format ist LT
)
Ich erwarte 4:01 AM
zu sein.
edit.html.erb
<%= render 'event_form'%>
_event_form.html.erb
Dies sowohl :start_at
und :end_at
passieren.
<%= form_for([@room, @event]) do |f| %>
...
<div class="container">
<div class="row">
<div class='col-sm-6'>
<div class="form-group">
<div class='input-group date' id='datetimepicker1'>
<%= f.text_field :start_at, :class => 'form-control'%> #this line
<span class="input-group-addon">
<span class="glyphicon glyphicon-time"></span>
</span>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
$('#datetimepicker1').datetimepicker({
format: 'LT'
});
});
</script>
</div>
</div>
<div class="container">
<div class="row">
<div class='col-sm-6'>
<div class="form-group">
<div class='input-group date' id='datetimepicker2'>
<%= f.text_field :end_at, :class => 'form-control'%> #this line
<span class="input-group-addon">
<span class="glyphicon glyphicon-time"></span>
</span>
</div>
</div>
</div>
<script type="text/javascript">
$(function() {
$('#datetimepicker2').datetimepicker({
format: 'LT'
});
});
</script>
</div>
</div>
...
Ich folge https://eonasdan.github.io/bootstrap-datetimepicker/#custom-formats
Schema
create_table "events", force: :cascade do |t|
t.time "start_at"
t.time "end_at"
t.string "title"
t.string "detail"
t.integer "room_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "category"
t.integer "ccy"
t.decimal "amount"
end
events_controller.rb
...
def edit
@room = Room.find(params[:room_id])
@event = @room.events.find(params[:id])
end
...
Es wäre willkommen, wenn Sie mir geben könnte ein ny Beratung.
Ich glaube, das Problem ist, dass der Datetime-Picker erwartet, dass Sie den Wert im gleichen Format festlegen. Das heißt, der Wert, den Sie an den Picker übergeben, sollte "4:01 Uhr" sein, nicht "04: 01: 00". – MrWillihog
Vielen Dank für Ihre schnelle Antwort, @MrWillihog. Obwohl ich versuchte, 'l (: start_at)' zu verwenden, um die Formateinstellungen in der XML-Datei widerzuspiegeln, wird der folgende Fehler angezeigt. 'I18n :: ArgumentError (Objekt muss ein Date-, DateTime- oder Time-Objekt sein.: Start_at gegeben.):'. Dies könnte ein anderes Problem sein, aber es würde geschätzt werden, wenn Sie mir einen Hinweis geben könnten. – SamuraiBlue
Ich bin mir nicht sicher, ob das der beste Weg ist, aber ich habe so etwas in meinem Javascript: '$ ('# datetimepicker'). Data (" DateTimePicker ") .date (moment (myDate) .utc(). Format (DATE_FORMAT)); '. Es lohnt sich vielleicht, darauf zu warten, dass jemand mit einer besseren Antwort kommt. – MrWillihog