in

Ruby on Rails – Andamios

scoffold

Mientras desarrolla aplicaciones Rails, especialmente aquellas que principalmente le brindan una interfaz simple para los datos en una base de datos, a menudo puede ser útil utilizar el método de andamio.

Los andamios ofrecen más emociones que una demostración barata. Aquí hay algunos beneficios:

  • Puede mostrar rápidamente el código a sus usuarios para que realicen comentarios.

  • Estás motivado por un éxito más rápido.

  • Puede aprender cómo funciona Rails mirando el código generado.

  • Puede utilizar andamios como base para impulsar su desarrollo.

Ejemplo de andamio

Comprender andamio, creemos una base de datos llamada libro de cocina y una mesa llamada recetas.

Creación de una aplicación web de rieles vacíos

Abra una ventana de comando y navegue hasta donde desea crear este libro de cocina Aplicación web. Entonces, ejecute el siguiente comando para crear una estructura de directorio completa.

tp> rails new cookbook

Configurar la base de datos

Esta es la forma de crear una base de datos:

mysql> create database cookbook;
Query OK, 1 row affected (0.01 sec)

mysql> grant all privileges on cookbook.*
to 'root'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Para indicarle a Rails cómo encontrar la base de datos, edite el archivo de configuración cookbook config database.yml y cambie el nombre de la base de datos a cookbook. Deje la contraseña vacía. Cuando termine, debería verse de la siguiente manera:

development:
   adapter: mysql
   database: cookbook
   username: root
   password: [password]
   host: localhost
	
test:
   adapter: mysql
   database: cookbook
   username: root
   password: [password]
   host: localhost
	
production:
   adapter: mysql
   database: cookbook
   username: root
   password: [password]
   host: localhost

Rails le permite ejecutar en modo de desarrollo, modo de prueba o modo de producción, utilizando diferentes bases de datos. Esta aplicación usa la misma base de datos para cada uno.

El código de andamio generado

Con la acción de andamio, Rails genera todo el código que necesita de forma dinámica. Mediante la ejecución andamio como un script, podemos obtener todo el código escrito en el disco, donde podemos investigarlo y luego comenzar a adaptarlo a nuestros requisitos.

Así que ahora, comencemos una vez más a generar código Scaffold manualmente usando el script auxiliar de scaffold –

cookbook> rails generate scaffold recipe

Genera archivos automáticos como se muestra a continuación:

Andamio

El controlador

Veamos el código detrás del controlador. Este código es generado por el andamio generador. Si abre app / controllers / recipes_controller.rb, encontrará algo de la siguiente manera:

class RecipesController < ApplicationController
   before_action :set_recipe, only: [:show, :edit, :update, :destroy]
   
   # GET /recipes
   # GET /recipes.json
   def index
      @recipes = Recipe.all
   end
   
   # GET /recipes/1
   # GET /recipes/1.json
   def show
   end
   
   # GET /recipes/new
   def new
      @recipe = Recipe.new
   end
   
   # GET /recipes/1/edit
   def edit
   end
   
   # POST /recipes
   # POST /recipes.json
   def create
      @recipe = Recipe.new(recipe_params)
      
      respond_to do |format|
         if @recipe.save
            format.html { redirect_to @recipe, notice: 'Recipe was successfully created.' }
            format.json { render :show, status: :created, location: @recipe }
         else
            format.html { render :new }
            format.json { render json: @recipe.errors, status: :unprocessable_entity }
         end
      end
      
   end
   
   # PATCH/PUT /recipes/1
   # PATCH/PUT /recipes/1.json
   def update
      respond_to do |format|
         if @recipe.update(recipe_params)
            format.html { redirect_to @recipe, notice: 'Recipe was successfully updated.' }
            format.json { render :show, status: :ok, location: @recipe }
         else
            format.html { render :edit }
            format.json { render json: @recipe.errors, status: :unprocessable_entity }
         end
      end
      
   end
   
   # DELETE /recipes/1
   # DELETE /recipes/1.json
   def destroy
      @recipe.destroy
         respond_to do |format|
         format.html { redirect_to recipes_url, notice: 'Recipe was successfully destroyed.' }
         format.json { head :no_content }
      end
   end
   
   private
   
   # Use callbacks to share common setup or constraints between actions.
   def set_recipe
      @recipe = Recipe.find(params[:id])
   end
   
   # Never trust parameters from the scary internet, only allow the white list through.
   def recipe_params
      params.require(:recipe).permit(:tittle, :instructions)
   end
end

Cuando el usuario de una aplicación Rails selecciona una acción, por ejemplo, «Mostrar» – el controlador ejecutará cualquier código en la sección apropiada – «def show» – y luego, por defecto, mostrará una plantilla con el mismo nombre – «show.html». erb «. Este comportamiento predeterminado se puede sobrescribir.

El controlador utiliza métodos ActiveRecord como buscar, buscar_todos, nuevo, guardar, actualizar_atributos y destruir para mover datos hacia y desde las tablas de la base de datos. Tenga en cuenta que no tiene que escribir ninguna declaración SQL, rails se encargará de ello automáticamente.

Esta única línea de código dará vida a la tabla de la base de datos. Proporcionará una interfaz simple para sus datos y formas de:

  • Creando nuevas entradas
  • Editar entradas actuales
  • Ver entradas actuales
  • Destruyendo las entradas actuales

Al crear o editar una entrada, scaffold hará todo el trabajo duro, como la generación y el manejo de formularios, e incluso proporcionará una generación de formularios inteligente, admitiendo los siguientes tipos de entradas:

  • Cadenas de texto simples
  • Áreas de texto (o grandes bloques de texto)
  • Selectores de fecha
  • Selectores de fecha y hora

Puede utilizar Rails Migrations para crear y mantener tablas.

rake db:migrate RAILS_ENV=development

Ahora, vaya al directorio del libro de recetas y ejecute el servidor web con el siguiente comando:

cookbook> rails server

Ahora, abra un navegador y navegue hasta http://127.0.0.1:3000/recipe/new. Esto le proporcionará una pantalla para crear nuevas entradas en la tabla de recetas. A continuación se muestra una captura de pantalla:

Crear receta

Una vez que presione el Crear para crear una nueva receta, su registro se agrega a la tabla de recetas y muestra el siguiente resultado:

Crear receta

Puede ver la opción de editar, mostrar y destruir los registros. Entonces, juega con estas opciones.

También puede enumerar todas las recetas disponibles en la tabla de recetas utilizando la URL http://127.0.0.1:3000/recipe/list.

Mejorando el modelo

Rails te ofrece una gran cantidad de manejo de errores de forma gratuita. Para comprender esto, agregue algunas reglas de validación al modelo de receta vacía:

Modifique la aplicación / modelos / receta.rb de la siguiente manera y luego pruebe su aplicación:

class Recipe < ActiveRecord::Base
   validates_length_of :title, :within => 1..20
   validates_uniqueness_of :title, :message => "already exists"
end

Estas entradas darán una verificación automática.

  • valida_length_of – el campo no está en blanco ni es demasiado largo.

  • valida_uniqueness_of – los valores duplicados quedan atrapados. En lugar del mensaje de error predeterminado de Rails, hemos proporcionado un mensaje personalizado aquí.

Forma alternativa de crear andamios

Cree una aplicación como se muestra arriba y El código de andamio generado Como se muestra abajo

rails g scaffold Recipe tittle:string instructions:text

El código anterior genera los archivos automáticos con la base de datos usando con sqlite3 con título y columna de instrucciones como se muestra debajo de una imagen.

Andamio

necesitamos migrar la base de datos usando la siguiente sintaxis.

$ rake db:migrate RAILS_ENV=development

Finalmente, ejecute la aplicación usando la siguiente línea de comando:

rails server

Generará el resultado como se muestra arriba en las imágenes de salida.

Las vistas

Todas las vistas y todos los métodos del controlador correspondientes son creadas por andamio comando y están disponibles en el directorio app / views / recipes.

¿En qué se diferencian los andamios?

Si ha repasado los capítulos anteriores, entonces debe haber visto que habíamos creado métodos para listar, mostrar, eliminar y crear datos, etc., pero el scaffolding hace ese trabajo automáticamente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

salesforce architecture

Arquitectura de Salesforce – Javatpoint

apple touch icon@2

impresión – ¿Cómo imprimir en stderr en Python?