0

Я использую daterangepicker с moment для выбора различного диапазона. Мне нужно установить startDate и endDate динамически.момент строительства возвращается к js Дата

В html.erb файле:

<%if params[:campaign_report].present? && params[:campaign_report]["daterange"].present?%> 
    <%date_range= params[:campaign_report]["daterange"].split("-")%> 
    <%= @start_date= Date.parse(date_range[0]).strftime("%Y/%m/%d")%> 
    <%= @end_date= Date.parse(date_range[1]).strftime("%Y/%m/%d")%> 
<%else%> 
    <%= @start_date= Date.parse(@daterange).strftime("%Y/%m/%d")%> 
    <%= @end_date= Date.parse(@daterange).strftime("%Y/%m/%d")%> 
<%end%> 

<script type="text/javascript"> 

$(function() { 
    function report_form_submit(start, end) { 
    $('#daterange').val(start.format('MMM D, YYYY') + ' - ' + end.format('MMM D, YYYY')); 
    $("#campaign_report_daterange").val($("#daterange").val()) 
    $("#daily_filter_form").submit(); 
    } 

    $('#daterange').daterangepicker({ 
    ranges: { 
     'Today': [moment(), moment()], 
     'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], 
     'Last 7 Days': [moment().subtract(6, 'days'), moment()], 
     'Last 30 Days': [moment().subtract(29, 'days'), moment()], 
     'This Month': [moment().startOf('month'), moment().endOf('month')], 
     'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] 
    }, 
    startDate: moment('<%= @start_date%>'), 
    endDate: moment('<%= @end_date%>') 
    }, report_form_submit); 
}); 
..... 

Я получаю предупреждение в консоли браузера, как:

Deprecation предупреждение: момент строительства возвращается к Js Дата. Это обескураживает и будет удалено в предстоящем крупном выпуске. Пожалуйста, обратитесь к https://github.com/moment/moment/issues/1407 за дополнительной информацией.

+0

это предупреждение, не ошибка, но вы должны сделать что-то об этом - вы показывая ** целом ** сообщение или только первый часть? –

+0

, потому что ** ** ** содержит ссылку: https: // github.com/moment/moment/issues/1407' ..., которая говорит вам ** точно ** как исправить это –

+0

Следуйте по ссылке и исправить свой код ^^^ посмотреть, как я знал все сообщение, прежде чем вы раскрыли все в своем вопросе? Это делает меня волшебником - я должен быть сожжен на костре за эту демоническую силу? –

ответ

0

Следуйте инструкциям, указанным в ссылке в предупреждении: используйте формат определения синтаксического анализа.

Как Docs говорит:

Предупреждение: Поддержка браузера для разбора строк is inconsistent. Поскольку нет спецификаций, по которым должны поддерживаться форматы, то, что работает в некоторых браузерах, не будет работать в других браузерах.

Для согласованного анализа результатов, отличных от строк ISO 8601, вы должны использовать String + Format.

В вашем случае вы должны использовать:

startDate: moment('<%= @start_date%>', 'YYYY/MM/DD'), 
endDate: moment('<%= @end_date%>', 'YYYY/MM/DD')