Personalizando el Formato de Tiempo en Rails 5 Apps - LPC-Ltda/Ruby-on-Rails GitHub Wiki

Paso 1

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

Paso 2

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)

Paso 3

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"

Paso 4

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
⚠️ **GitHub.com Fallback** ⚠️