2011-10-09 22 views
14

Tôi sử dụng strftime để định dạng thời gian thô của tôi làm văn bản của hộp nhập liệu. Thông thường, khi tôi sử dụng strftime tôi kiểm tra nếu đối tượng là nil để ngăn chặn các lỗi bằng cách sử dụng trừ khi nil? Tuy nhiên, có vẻ như tôi không thể sử dụng điều đó tại đây:Sử dụng strftime trên đối tượng nil - cách ngăn chặn lỗi?

<%= text_field_tag :event_date, @event.event_date.strftime("%m/%d/%Y at %I:%M%p"), :size=>30 %> 

Tôi đã xóa trừ khi đã xảy ra lỗi. Làm thế nào tôi có thể chắc chắn rằng câu lệnh này hoạt động nếu @ event.event_date là nil?

Cảm ơn

Trả lời

35

Một mẹo là sử dụng try.

<%= text_field_tag :event_date, @event.event_date.try(:strftime, "%m/%d/%Y at %I:%M%p"), :size=>30 %> 

Hoặc chỉ cần kiểm tra xem event_date được thiết lập:

<%= text_field_tag :event_date, (@event.event_date && @event.event_date.strftime("%m/%d/%Y at %I:%M%p")), :size=>30 %> 
+0

Người đầu tiên làm việc rực rỡ. Cảm ơn bạn. –

+0

Tuyệt vời! (cảm thấy tự do để chấp nhận câu trả lời này) – rdvdijk

+0

Điều này cũng sẽ là một ứng cử viên tốt cho '.blank? 'Tôi đã làm việc trong một số hình thức gần đây và nó có ích. (Vì nó kiểm tra một chuỗi rỗng và không.) – Tass

Các vấn đề liên quan