Cómo crear una aplicación Bootic II

Julio 2021

A la aplicación rails que desarrollamos en la entrega anterior le vamos a agregar las siguientes elementos:

Requerimientos

Listado de pedidos

En el archivo dashboard_controller.rb, en la acción index agregamos lo siguiente:


def index
  @orders = last_orders
end

private

def last_orders
  return [] unless current_shop.has?(:orders)
  current_shop.orders(sort: 'updated_on.desc', per_page: per_page)
end

def per_page
  params[:per_page] ||= 10
end

El método privado last_orders nos traerá los últimos 10 pedidos; estos 10 últimos estás configurados en el método per_page.

En la vista(dashboard/index.html.erb)—por otro lado—deberíamos tener algo así:

Listado de productos

Muy similar a lo anterior, en el controlador tendremos lo siguiente:

def index
  @products = last_products
end

def last_products
  return [] unless current_shop.has?(:products)
  current_shop.products(status: "all", 
    sort: 'updated_on.desc', 
    per_page: per_page)
end

Notar el status: "all", para que nos traiga tanto ocultos como visibles.

Y en la vista debemos tener lo siguiente:

Total de registos

Ahora vamos a cambiar la cantidad de pedidos y productos, le daremos tres posibles valores:

En la vista (dashboard/index.html.erb) creamos un formulario con la siguiente información:

Listo, lo anterior debería ser suficiente puesto que nuestro controlador ya sabe que existe una parámetro per_page que podría ser configurado.

Cambiando el estado de un producto

Finalmente vamos a cambiar el estado de un pedido. En el controlador DashboardController vamos a crear el siguiente método:

La línea 6 contiene la llamada que cambiará el estado del producto en la API.

La vista que enviará la info al controlador debería contener lo siguiente:

El último condimento para que todo lo anterior funcione es crear una ruta, para ello editamos el archivo routes.rb.

Rails.application.routes.draw do

# [...]

put 'dashboard/change_status', to: 'dashboard#change_status'

# [...]

end