2014-09-24 3 views
0

Следующий код работает, чтобы показать дату, только если он присутствует:Показать отформатированную дату в f.text_field если он присутствует, иначе заполнитель

f.text_field :published_at, placeholder: "E.g. 12 Sep 2014", value: @post.try(:published_at) 

Но как бы я форматировать его?

Это, как я форматировать его, если бы я знал, что дата присутствует:

value: @post.published_at.strftime("%e %b %Y") 
+2

вы о '@ post.try (: published_at) .try (: STRFTIME,«% e% b% Y ")'? – IS04

ответ

1

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

f.text_field :published_at, placeholder: "E.g. 12 Sep 2014", value: custom_format(@post.try(:published_at)) 

some_helper.rb

def custom_format(date) 
    date ? date.strftime("%e %b %Y") : nil 
end 
1

Почему вы не добавить простой метод, который возвращает дату в нужном формате?

class YourModel 
    def formatted_published_at 
    published_at.strftime("%e %b %Y") if published_at? 
    end 
end 

Возможно, вы будете использовать его и в других представлениях, кроме формы.