Невозможно отобразить выбранную дату с помощью Bootstrap-datepicker-rails как дд/мм/гггг

Я пытаюсь поместить bootstrap-datepicker в поля ввода даты в своем приложении. После того, как дата выбрана из календаря, я хочу, чтобы дата отображалась как «дд/мм/гггг». Даты сохраняются в таблице (sqlite) в формате «гггг-мм-дд».

Я сделал следующее:

В файле application.js у меня есть:

   //= require jquery
   //= require jquery_ujs
   //= require jquery-ui
   //= require turbolinks
   //= require bootstrap-datepicker
   //= require_tree .

В файле application.html.erb у меня есть:

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>

В custom.css.scss у меня есть:

  @import "bootstrap-sprockets";
  @import "bootstrap";

В соответствующем файле .js у меня есть:

   $(document).on("focus", "[data-behaviour~='datepicker']", function(e){
   $(this).datepicker({"format": "dd-mm-yy", "weekStart": 1, autoclose": true, "language": 'en-GB'})});

Я также пробовал этот код в файле application.js - безуспешно.

В связанной форме у меня есть:

    <a> Start Date/time: </a>
    <%= f.text_field :start_date, 'data-behaviour' => 'datepicker', size:10 %>

Результат: я получаю календарь, из которого я могу выбрать дату, но дата отображается в формате по умолчанию «мм/дд/гггг».

Другие попытки: я поместил скрипт в форму, но это тоже не сработало.

Любая помощь будет безмерно оценена.

Заранее спасибо,


person user3331154    schedule 23.01.2016    source источник


Ответы (3)


Я также столкнулся с такой ситуацией, когда я хочу, чтобы один формат даты отображал дату в текстовом поле, а другой формат сохранял дату.

поэтому моя работа выглядит следующим образом

Объявите разные поля для принятия даты и для сохранения даты. здесь мое поле принятия - "select_date", а фактическое поле - "дата"

= text_field_tag :select_date, '', :class => "datepicker"
= hidden_field_tag("date", "", :id => "request_date") 

и простой скрипт помогает мне сохранить значение в обоих полях.

$(function() {
  $(".datepicker").datepicker({ 
    dateFormat: 'DD MM d',
    altField: '#request_date',
    altFormat: "yy-mm-dd"
  });
});

поэтому, когда вы выбираете значение в календаре, оно заполняет оба поля в другом формате.

person chaitanya    schedule 23.01.2016
comment
Большое спасибо Чайтанья Сараф. Это единственное решение, которое сработало для меня, хотя другие ответы ниже выглядят так, как будто они должны работать. Мне также пришлось поместить функцию в форму как «скрипт», потому что у предыдущей формы есть помощник, который, хотя я не мог сказать почему, переопределял файл .js. - person user3331154; 24.01.2016
comment
рад слышать, что это работает для вас, спасибо, что приняли мой ответ - person chaitanya; 24.01.2016

Вы можете установить формат даты в качестве атрибута данных, как,

<%= f.text_field :start_date, 'data-behaviour' => 'datepicker', size:10, 'data-date-format' => "mm/dd/yyyy")
person Sasidaran    schedule 23.01.2016