A la aplicación rails que desarrollamos en la entrega anterior le vamos a agregar las siguientes elementos:
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í:
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:
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.
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