Personalizando el Formato de Tiempo en Rails 5 Apps - LPC-Ltda/Ruby-on-Rails GitHub Wiki
En products/index.html.erb
:
<%= task.due_date %>
Da la siguiente salida fea.
task.name due on 2016-01-17
due_date.to_s(:long)
produce task.name due on January 17, 2016
La salida para el formato :short
es: task.name due on 17 Jan
La salida para el formato :db
es: task.name due on 2016-01-17
Podemos personalizar el formato de hora así:
due_date.strftime("due on %B %d at %I:%M %p")
Esto llevará a la duplicación si necesitamos llamar desde diferentes vistas. Veamos cómo podemos definir nuestro propio formato de hora que nos permitirá hacer nuestro formato específico de la aplicación due_date.to_s(:due_time)
Cree el archivo config/initializers/custom_time_formats.rb
con la personalización del formato de tiempo:
Time::DATE_FORMATS[:due_time] = "due on %B %d at %I:%M %p"
Reinicie el servidor y vuelva a cargar la página de índice de tareas. Para poder mostrar la fecha y la hora, necesitamos usar la columna datetime y no date. Modifique la migración para agregar la due_time
.
class AddDueDateToTasks < ActiveRecord::Migration[5.0]
def change
add_column :tasks, :due_date, :datetime
end
end
Rellenemos la base de datos con datos nuevos que tengan valores para la columna due_date
en la tabla de tareas.
rails db:drop
rails db:migrate
rails db:seed
El seeds.rb
es el mismo que antes, ya que estamos utilizando métodos ActiveSupport, no requiere ningún cambio. El tasks/index.html.erb
tienen este aspecto:
<tbody>
<% @task_months.each do |month, tasks| %>
<%= month.strftime('%B') %>
<tr>
<% for task in tasks %>
<div class='task'>
<strong> <%= task.name %> </strong>
<%= task.due_date.to_s(:due_time) %>
</div>
<% end %>
</tr>
<% end %>
</tbody>
Recargue la página índice de tareas:
Get rich quick due on January 17 at 11:23 PM
Buy a puppy due on January 17 at 11:23 PM
Dance in the rain due on January 17 at 11:23 PM