2013-09-14 3 views
2

Я использую Ruby On Rails 4 и щебет-бутстраповских-рельсы, чтобы клиент хочет Dislay даты в этом формате:Как вывести другой формат даты. Рельсы

14 September 2013 Ну очень здорово, там мы идем:

 

    var start = $("#project_start_date").datepicker({ 
     format: 'dd MM yyyy', 
     autoclose: true 
    }) 

Однако когда дата сохраняется в базе данных, она сохраняется как «2013-09-14». Ну круто, но когда я хочу, чтобы изменить страницу, я вижу следующее:.

2013-09-14 как выход поля :(Не хороший эй

Так как бы вы вывести дату в заданном формате (I вероятно, нужно @start_date.stftime("%d %B %Y")

Просто хотел сказать, что:.

  1. методы геттерные не делают работу: def start_date() @start_date.stftime("%d %B %Y") end
  2. before_validation также не делали:
 
before_validation :date_validation 

    def date_validation 
    @start_date = self.start_date.strftime("%D %m %Y") 
    @end_date = self.end_date.strftime("%d %m %Y") 
    end 

PS Я использую Postgres.

+0

спасает вас дату в виде строки или дату в базе данных? –

+0

Когда вы говорите «не выполняли работу», вы имеете в виду, что она не работает должным образом или была ошибка? Если да, то в чем была ошибка? –

+1

В любом случае, вместо добавления кода форматирования даты в вашей модели, вы должны рассмотреть возможность использования концепции «draper» или любой другой концепции уровня представления. http://railscasts.com/episodes/286-draper –

ответ

0

Чтобы изменить формат сохранения даты в базе данных, добавьте этот фрагмент кода в файл environment.rb.

# environment.rb : 

ActiveSupport::CoreExtensions::Date::Conversions::DATE_FORMATS.merge!(
    :default => "%d %B %Y" 
) 
+0

environment.rb: 7: in ' ': неинициализированная константа ActiveSupport :: CoreExtensions (NameError) –

1

Проверьте, сохраняется ли дата в виде строки в базе данных, как это выглядит.

Try генерируя миграцию и убедившись, что у вас есть столбец даты, что-то вроде этого

def change  
    change_column :table_name, :start_date, :datetime 
    change_column :table_name, :end_date, :datetime 
end 

Таким образом, вы можете использовать STRFTIME форматировать его, как вы уже упоминалось выше.

+0

Сохраняется как дата в PostgreSQL –

0

Я решил сделать этот старый Q завершенным, ответив на него.

Помимо использования Draper, который был упомянут в комментариях, самый простой способ заключается в override AR getter, а не в проверке, т.е.

# in your model 
def start_date 
    self[:start_date].strftime("%D %m %Y") 
end 
Смежные вопросы