Prompt Detail:
Para generar la aplicación, necesitarás tener instalado Ruby on Rails y Bootstrap. Si ya los tienes instalados, sigue estos pasos:
- Crea una nueva aplicación de Rails llamada "prospectos" con Bootstrap integrado:
arduinorails new prospectos -d postgresql -T --skip-turbolinks --webpacker=stimulus -m https://raw.githubusercontent.com/estebanz01/rails-bootstrap-template/main/template.rb
- Agrega la gema Devise al Gemfile:
rubygem 'devise'
- Instala las gemas:
bundle install
- Genera los modelos "Lead" y "Talk":
vbnetrails generate model Lead name:string email:string phone:string status:integer
rails generate model Talk body:text lead:references
- Genera el controlador "Leads":
sqlrails generate controller Leads index new create edit update
- Agrega las rutas para "Leads" y "Talks" en config/routes.rb:
rubyRails.application.routes.draw do
resources :leads, except: [:destroy]
resources :talks, only: [:create, :update]
end
- Agrega el control de acceso de Devise a la aplicación. Primero, genera el modelo de usuario:
sqlrails 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:
rubybefore_action :authenticate_user!
- Configura Devise para que el registro de nuevos usuarios esté desactivado en config/routes.rb:
rubydevise_for :users, skip: [:registrations]
- Agrega las vistas para "Leads" y "Talks". Puedes utilizar scaffold para generar las vistas básicas:
sqlrails 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.
- Agrega la funcionalidad para listar los prospectos con su estado en app/controllers/leads_controller.rb:
rubydef 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?' } %