Mam pole data_rodziny, które jest przechowywane jako wartość datetime. Domyślne szyny tworzą pomocników wypluwają niezbyt przyjazny format, np. "2008-06-10 22: 33: 19.000000". Poniżej znajduje się sposób na wanilię.Szyny: Przyjazny dla człowieka format daty dla pola tekstowego
<div class="field">
<%= f.label :birth_date %>
<%= f.text_field :birth_date, :size=>"20" %>
</div>
Jak mogę po prostu zastosować format? Próbowałem różnych podejść, na przykład strftime powinno działać, pomyślałem. Ale gdy próbuję następujące, pojawia się błąd undefined method 'strftime' for nil:NilClass
<div class="field">
<%= f.label :birth_date %>
<%= f.text_field :birth_date, :value=>f.object.birth_date.strftime('%m/%d/%Y'), :size=>"20" %>
</div>
oparciu o pewne inne pytania/odpowiedzi, próbowałem następujące. Działa dla wartości innych niż null, ale jest to brzydki kod i nie działa dla pustych wartości (faktycznie pokazuje dzisiejszą datę).
<div class="field">
<%= f.label :birth_date %>
<%= f.text_field :birth_date, :value=> Time.parse(f.object.birth_date.to_s).strftime('%m/%d/%Y'), :size=>"20" %>
</div>
W zabawy, wydaje się, że wyprowadzanie f.object.birth_date traktowana jest jako data, zamiast datetime. Jednak podczas wyświetlania w polu tekstowym (oryginalne, brzydkie formatowanie) zawiera on czas. Jest piątkowe popołudnie, a mój wspólny brak znajomości z szynami i rubinowymi obiektami daty/czasu sprawia, że czuję się głupio.
Każdy prosty sposób, aby mój formularz nie wyświetlał nic, jeśli jest pusty/pusty, a przyjazna data jest inna?
Dzięki, robię to, czego potrzebuję. Byłem zdezorientowany, dlaczego to nie powoduje błędu, gdy robi to bez sprawdzania zerowego. Myślę, że mam to teraz posortowane. Robi to, co chcę (choć nadal wydaje się dużo kodu). –
Nie ma za co. Powodem, dla którego powoduje błąd bez sprawdzenia 'nil' jest to, że gdy' f.object.birth_date' jest 'nil', spróbujesz wywołać' strftime' na nim. Ponieważ 'nil' nie ma metody" strftime ", zgłasza błąd. – Claw