datetime pickerのためにgem 'momentjs-rails'
を使用しています。
モデル
#deadline is saved in the db
#this is the getter-setter for deadline_string
def deadline_string
deadline.to_datetime.iso8601
end
def deadline_string=(deadline_str)
self.deadline = deadline_str
end
フォーム
#new form
<div class="field form-group">
<%= f.label :deadline %>
<%= f.text_field :deadline, class: "form-control new-task-deadline" %>
</div>
#edit form
<div class="field form-group">
<%= f.label :deadline %>
<%= f.text_field :deadline_string, class: "form-control edit-task-deadline" %>
</div>
JS get要求にすてきなデータを表示するために
$('.new-task-submit').on('click', function (e){
e.preventDefault();
var localMoment = moment($('.new-task-deadline').val());
$('.new-task-deadline').val(localMoment.toISOString());
$('#newtask').submit();
});
$(document).on('click', '.edit-task-submit', function (e){
e.preventDefault();
var deadlineField = $('.edit-task-deadline');
var localMoment = moment(deadlineField.val());
var railsDate = localMoment.toISOString();
deadlineField.val(railsDate);
$(".task-update-form").submit();
});
JSをDBへ保存
//setting time and datetimepicker when opening edit task modal
$(document).on('shown.bs.modal', '#update-task-modal', function (e) {
var deadlineField = $('.edit-task-deadline');
var deadlineValue = deadlineField.attr('value');
var momentDeadline = moment(deadlineValue).format('MM/DD/YYYY hh:mm A');
deadlineField.val(momentDeadline);
deadlineField.datetimepicker({
sideBySide: true,
format: 'MM/DD/YYYY hh:mm A',
stepping: 15,
widgetPositioning: { vertical: 'bottom' }
});
});
どの日付ピッカーですか? 1つの形式で表示することも、別の形式でサーバーに送信することもできます。 IMOの最善の策は、端を除いてISO8601( 'YYYY-MM-DD')を使うことです。 –
私はブートストラップdatepickerを使用しています –
あなたはそれがサポートしているオプションについてのドキュメントをチェックしましたか? –