Create guests scaffold
This commit is contained in:
parent
2f8f3404bb
commit
2ed9f98695
70
app/controllers/guests_controller.rb
Normal file
70
app/controllers/guests_controller.rb
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
class GuestsController < ApplicationController
|
||||||
|
before_action :set_guest, only: %i[ show edit update destroy ]
|
||||||
|
|
||||||
|
# GET /guests or /guests.json
|
||||||
|
def index
|
||||||
|
@guests = Guest.all
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /guests/1 or /guests/1.json
|
||||||
|
def show
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /guests/new
|
||||||
|
def new
|
||||||
|
@guest = Guest.new
|
||||||
|
end
|
||||||
|
|
||||||
|
# GET /guests/1/edit
|
||||||
|
def edit
|
||||||
|
end
|
||||||
|
|
||||||
|
# POST /guests or /guests.json
|
||||||
|
def create
|
||||||
|
@guest = Guest.new(guest_params)
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
if @guest.save
|
||||||
|
format.html { redirect_to guest_url(@guest), notice: "Guest was successfully created." }
|
||||||
|
format.json { render :show, status: :created, location: @guest }
|
||||||
|
else
|
||||||
|
format.html { render :new, status: :unprocessable_entity }
|
||||||
|
format.json { render json: @guest.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# PATCH/PUT /guests/1 or /guests/1.json
|
||||||
|
def update
|
||||||
|
respond_to do |format|
|
||||||
|
if @guest.update(guest_params)
|
||||||
|
format.html { redirect_to guest_url(@guest), notice: "Guest was successfully updated." }
|
||||||
|
format.json { render :show, status: :ok, location: @guest }
|
||||||
|
else
|
||||||
|
format.html { render :edit, status: :unprocessable_entity }
|
||||||
|
format.json { render json: @guest.errors, status: :unprocessable_entity }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# DELETE /guests/1 or /guests/1.json
|
||||||
|
def destroy
|
||||||
|
@guest.destroy!
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html { redirect_to guests_url, notice: "Guest was successfully destroyed." }
|
||||||
|
format.json { head :no_content }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
# Use callbacks to share common setup or constraints between actions.
|
||||||
|
def set_guest
|
||||||
|
@guest = Guest.find(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
# Only allow a list of trusted parameters through.
|
||||||
|
def guest_params
|
||||||
|
params.require(:guest).permit(:first_name, :last_name, :email, :phone)
|
||||||
|
end
|
||||||
|
end
|
2
app/helpers/guests_helper.rb
Normal file
2
app/helpers/guests_helper.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module GuestsHelper
|
||||||
|
end
|
2
app/models/guest.rb
Normal file
2
app/models/guest.rb
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
class Guest < ApplicationRecord
|
||||||
|
end
|
37
app/views/guests/_form.html.erb
Normal file
37
app/views/guests/_form.html.erb
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
<%= form_with(model: guest) do |form| %>
|
||||||
|
<% if guest.errors.any? %>
|
||||||
|
<div style="color: red">
|
||||||
|
<h2><%= pluralize(guest.errors.count, "error") %> prohibited this guest from being saved:</h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% guest.errors.each do |error| %>
|
||||||
|
<li><%= error.full_message %></li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= form.label :first_name, style: "display: block" %>
|
||||||
|
<%= form.text_field :first_name %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= form.label :last_name, style: "display: block" %>
|
||||||
|
<%= form.text_field :last_name %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= form.label :email, style: "display: block" %>
|
||||||
|
<%= form.text_field :email %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= form.label :phone, style: "display: block" %>
|
||||||
|
<%= form.text_field :phone %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= form.submit %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
22
app/views/guests/_guest.html.erb
Normal file
22
app/views/guests/_guest.html.erb
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<div id="<%= dom_id guest %>">
|
||||||
|
<p>
|
||||||
|
<strong>First name:</strong>
|
||||||
|
<%= guest.first_name %>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Last name:</strong>
|
||||||
|
<%= guest.last_name %>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Email:</strong>
|
||||||
|
<%= guest.email %>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<strong>Phone:</strong>
|
||||||
|
<%= guest.phone %>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</div>
|
10
app/views/guests/edit.html.erb
Normal file
10
app/views/guests/edit.html.erb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<h1>Editing guest</h1>
|
||||||
|
|
||||||
|
<%= render "form", guest: @guest %>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= link_to "Show this guest", @guest %> |
|
||||||
|
<%= link_to "Back to guests", guests_path %>
|
||||||
|
</div>
|
14
app/views/guests/index.html.erb
Normal file
14
app/views/guests/index.html.erb
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<p style="color: green"><%= notice %></p>
|
||||||
|
|
||||||
|
<h1>Guests</h1>
|
||||||
|
|
||||||
|
<div id="guests">
|
||||||
|
<% @guests.each do |guest| %>
|
||||||
|
<%= render guest %>
|
||||||
|
<p>
|
||||||
|
<%= link_to "Show this guest", guest %>
|
||||||
|
</p>
|
||||||
|
<% end %>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<%= link_to "New guest", new_guest_path %>
|
9
app/views/guests/new.html.erb
Normal file
9
app/views/guests/new.html.erb
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<h1>New guest</h1>
|
||||||
|
|
||||||
|
<%= render "form", guest: @guest %>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= link_to "Back to guests", guests_path %>
|
||||||
|
</div>
|
10
app/views/guests/show.html.erb
Normal file
10
app/views/guests/show.html.erb
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<p style="color: green"><%= notice %></p>
|
||||||
|
|
||||||
|
<%= render @guest %>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<%= link_to "Edit this guest", edit_guest_path(@guest) %> |
|
||||||
|
<%= link_to "Back to guests", guests_path %>
|
||||||
|
|
||||||
|
<%= button_to "Destroy this guest", @guest, method: :delete %>
|
||||||
|
</div>
|
@ -1,4 +1,5 @@
|
|||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
|
resources :guests
|
||||||
resources :expenses
|
resources :expenses
|
||||||
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
||||||
|
|
||||||
|
12
db/migrate/20240711180753_create_guests.rb
Normal file
12
db/migrate/20240711180753_create_guests.rb
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
class CreateGuests < ActiveRecord::Migration[7.1]
|
||||||
|
def change
|
||||||
|
create_table :guests do |t|
|
||||||
|
t.string :first_name
|
||||||
|
t.string :last_name
|
||||||
|
t.string :email
|
||||||
|
t.string :phone
|
||||||
|
|
||||||
|
t.timestamps
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
11
db/schema.rb
generated
11
db/schema.rb
generated
@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[7.1].define(version: 2024_07_11_175425) do
|
ActiveRecord::Schema[7.1].define(version: 2024_07_11_180753) do
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
|
||||||
@ -26,4 +26,13 @@ ActiveRecord::Schema[7.1].define(version: 2024_07_11_175425) do
|
|||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "guests", force: :cascade do |t|
|
||||||
|
t.string "first_name"
|
||||||
|
t.string "last_name"
|
||||||
|
t.string "email"
|
||||||
|
t.string "phone"
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
5
spec/models/guest_spec.rb
Normal file
5
spec/models/guest_spec.rb
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Guest, type: :model do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
Loading…
x
Reference in New Issue
Block a user