trzy opcje:
1) Upewnij się, nigdy nie masz daty zerowej. Zależy od produktu, który próbujesz utworzyć, ale w wielu przypadkach nie ma sensu wyświetlanie daty zerowej. Jeśli dla twojego produktu daty zerowe są uzasadnione, to nie zadziała.
2) Napisz do widoku kodu wszędzie ukryć nil:
<%= order.ship_date ? l(order.ship_date, :format => :long) : 'Date unavailable' %>
3) Napisz funkcję pomocnika to zrobić dla Ciebie:
def display_date(date, message='Date unavailable')
date ? l(date, :format => :long) : message
end
Następnie wszystko co musisz zrobić, w każdym miejscu chcesz, aby ta terapia daty była następująca:
<%= display_date(order.ship_date) %>
W moim przypadku używam 'text_field', a funkcja failsafe działa poprawnie. Dzięki! Wynikiem jest: '<% = f.text_field: due_date,: value => (l (order.due_date) if order.due_date.present?)%>' –