Ho un campo birth_date memorizzato come valore datetime. Le guide predefinite dei formatori di file sputano un formato non troppo amichevole, ad es. "2008-06-10 22: 33: 19.000000". Il sotto è il modo di binari di vaniglia.Rails: formato data human-friendly per text_field
<div class="field">
<%= f.label :birth_date %>
<%= f.text_field :birth_date, :size=>"20" %>
</div>
Come si può semplicemente applicare un formato? Ho provato vari approcci, per esempio dovrebbe funzionare strftime, ho pensato. Ma quando provo il seguente, ottengo un errore 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>
Sulla base di alcune altre domande/risposte, ho provato quanto segue. Funziona con valori non nulli, ma è un codice brutto e non funziona con valori vuoti (in realtà mostra la data odierna).
<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>
In suonare in giro, sembra che l'output f.object.birth_date è trattata come una data, piuttosto che datetime. Tuttavia, quando visualizzato nel campo testo (formattazione originale, brutta), include l'ora. È venerdì pomeriggio e la mia mancanza di familiarità con le forme delle rotaie e gli oggetti rubati data/ora mi sta facendo sentire sciocco.
Un modo semplice per ottenere che il mio modulo non visualizzi nulla se null/vuoto e una data amichevole altrimenti?
Grazie, fa quello che mi serve. Sono stato confuso perché questo non genera un errore quando lo fa senza il controllo nullo. Penso di averlo ordinato ora. Questo fa quello che voglio (anche se sembra ancora un sacco di codice). –
Prego. Il motivo per cui genera un errore senza il controllo 'nil' è perché quando' f.object.birth_date' è 'nil', proverai a chiamare' strftime' su di esso. Poiché 'nil' non ha un metodo' strftime', genera l'errore. – Claw