by
486 16

Controller Template

Template para el controller con CRUD
Copy Embed Code
<iframe id="embedFrame" style="width:600px; height:300px;"
src="https://www.snip2code.com/Embed/610795/Controller-Template?startLine=0"></iframe>
Click on the embed code to copy it into your clipboard Width Height
Leave empty to retrieve all the content Start End
# Controla el CRUD # # Por convencionalismo se omiten los métodos +index+, +new+, +update+. Ver nota sobre convencionalismos en +application_controller.rb+ # # El método +update+ es un alias de +create+ debido a *DRYtizar* el código # # Se aplican 7 métodos +before_action+ como consecuencia de *DRYtizar* el código, los cuales son *privados* class NombreDeLaTablaEnSingularsController < ApplicationController before_action :authenticate_user! before_action :set_nombre_de_la_tabla_en_singular, only: [:edit, :update, :destroy, :confirmar_borrar] before_action :new_nombre_de_la_tabla_en_singular, only: [:new, :create] before_action :crear_breadcrum, only: [:index,:new,:edit] before_action :asginar_captura, only: [:create,:update] before_action :asgina_current_user, only: [ :update, :destroy ] before_action :genera_listado, only: :index # Evitamos que en producción se vea un 404, redirigiendo culaquier petición a una página inexistente al index unless Rails.env.development? rescue_from ActionView::MissingTemplate do redirect_to nombre_de_la_tabla_en_singulars_path, status: 303 end end # Lo guarda en la base de datos. # # @note Hacemos uso del método del mismo nombre definido en <tt>application_controller.rb</tt> def create super @nombre_de_la_tabla_en_singular end alias_method :update, :create # Lo elimina de la base de datos # # @note Hacemos uso del método del mismo nombre definido en <tt>application_controller.rb</tt> def destroy super @nombre_de_la_tabla_en_singular end # Genera el reporte en PDF # # @note Hacemos uso del método del mismo nombre definido en <tt>application_controller.rb</tt> def listado_pdf super NombreDeLaTablaEnSingularPdf.new( NombreDeLaTablaEnSingular.all.order(:campo_ordenado), view_context ) end private # Este método se utiliza para asignar cada valor capturado a su contraparte en la instancia de la base de datos. # <b>Hacemos esto para evitar un ataque de inyección de SQL</b> def asginar_captura @nombre_de_la_tabla_en_singular.campo_ordenado = params[:nombre_de_la_tabla_en_singular][:campo_ordenado] @nombre_de_la_tabla_en_singular.campo_segundo = params[:nombre_de_la_tabla_en_singular][:campo_segundo] @nombre_de_la_tabla_en_singular.solo_root_ns = params[:nombre_de_la_tabla_en_singular][:solo_root_ns] end # Genera el breadcrum, pasamos la ruta a +index+ # # @note Hacemos uso del método del mismo nombre definido en <tt>application_controller.rb</tt> def crear_breadcrum super nombre_de_la_tabla_en_singulars_path end # Crea una nueva instancia del objeto def new_nombre_de_la_tabla_en_singular @nombre_de_la_tabla_en_singular = NombreDeLaTablaEnSingular.new end # Obtiene los datos desde la base de datos def set_nombre_de_la_tabla_en_singular @nombre_de_la_tabla_en_singular = NombreDeLaTablaEnSingular.find(params[:id]) end # Genera el listado. Este método es llamado tanto de forma directa como en el filtro +before_action+ def genera_listado @nombre_de_la_tabla_en_singulars = initialize_grid NombreDeLaTablaEnSingular, order: 'nombre_de_la_tabla_en_singulars.campo_ordenado', order_direction: 'desc', per_page: 10 end # Asigna el usuario actual a una variable de instancia a fin de pasen los tests def asgina_current_user @nombre_de_la_tabla_en_singular.usuario_actual = current_user end end
If you want to be updated about similar snippets, Sign in and follow our Channels

blog comments powered by Disqus