Prompt Title: Rails App with Devise

Created 1 year ago
Votes 0
Views 178 times
0

Prompt Detail:

Para generar la aplicación, necesitarás tener instalado Ruby on Rails y Bootstrap. Si ya los tienes instalados, sigue estos pasos:

  1. Crea una nueva aplicación de Rails llamada "prospectos" con Bootstrap integrado:
arduino
rails new prospectos -d postgresql -T --skip-turbolinks --webpacker=stimulus -m https://raw.githubusercontent.com/estebanz01/rails-bootstrap-template/main/template.rb
  1. Agrega la gema Devise al Gemfile:
ruby
gem 'devise'
  1. Instala las gemas:
bundle install
  1. Genera los modelos "Lead" y "Talk":
vbnet
rails generate model Lead name:string email:string phone:string status:integer rails generate model Talk body:text lead:references
  1. Genera el controlador "Leads":
sql
rails generate controller Leads index new create edit update
  1. Agrega las rutas para "Leads" y "Talks" en config/routes.rb:
ruby
Rails.application.routes.draw do resources :leads, except: [:destroy] resources :talks, only: [:create, :update] end
  1. Agrega el control de acceso de Devise a la aplicación. Primero, genera el modelo de usuario:
sql
rails generate devise User

Luego, agrega las líneas siguientes en app/controllers/application_controller.rb para requerir que los usuarios inicien sesión para acceder a la aplicación:

ruby
before_action :authenticate_user!
  1. Configura Devise para que el registro de nuevos usuarios esté desactivado en config/routes.rb:
ruby
devise_for :users, skip: [:registrations]
  1. Agrega las vistas para "Leads" y "Talks". Puedes utilizar scaffold para generar las vistas básicas:
sql
rails generate scaffold_view Leads name email phone status:integer rails generate scaffold_view Talks body:text lead:references

Luego, edita las vistas en app/views/leads y app/views/talks para que los campos estén en español.

  1. Agrega la funcionalidad para listar los prospectos con su estado en app/controllers/leads_controller.rb:
ruby
def index @leads = Lead.all @statuses = Lead.statuses end

Luego, agrega la vista correspondiente en app/views/leads/index.html.erb:

erb
<h1>Prospectos</h1> <% @statuses.each do |status, value| %> <p><%= status %> <%= Lead.where(status: value).count %></p> <% end %> <table> <thead> <tr> <th>Nombre</th> <th>Email</th> <th>Teléfono</th> <th>Estado</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @leads.each do |lead| %> <tr> <td><%= lead.name %></td> <td><%= lead.email %></td> <td><%= lead.phone %></td> <td><%= Lead.statuses.key(lead.status) %></td> <td><%= link_to 'Mostrar', lead %></td> <td><%= link_to 'Editar', edit_lead_path(lead) %></td> <td><%= link_to 'Eliminar', lead, method: :delete, data: { confirm: '¿Estás seguro?' } %
avatar
jl
Shared 1 prompt
Created 1 year ago

Leave a Comment