integration of the new MVC for subproject_addresses

This commit is contained in:
Stefan Tollkühn
2025-07-22 17:33:53 +02:00
parent bae8b9318d
commit bc0df35259
11 changed files with 176 additions and 1 deletions

View File

@@ -0,0 +1,49 @@
class SubprojectAddressesController < ApplicationController
before_action :set_subproject_address, only: %i[show edit update destroy]
def index
@subproject_addresses = SubprojectAddress.all
end
def show
end
def new
@subproject_address = SubprojectAddress.new
end
def edit
end
def create
@subproject_address = SubprojectAddress.new(subproject_address_params)
if @subproject_address.save
redirect_to @subproject_address, notice: "Adresse was successfully created."
else
render :new, status: :unprocessable_entity
end
end
def update
if @subproject_address.update(subproject_address_params)
redirect_to @subproject_address, notice: "Adresse was successfully updated."
else
render :edit, status: :unprocessable_entity
end
end
def destroy
@subproject_address.destroy
redirect_to subproject_addresses_url, notice: "Adresse was successfully destroyed."
end
private
def set_subproject_address
@subproject_address = SubprojectAddress.find(params[:id])
end
def subproject_address_params
params.require(:subproject_address).permit(:subproject_id, :streetname, :zipcode, :city, :country)
end
end

View File

@@ -0,0 +1,5 @@
class SubprojectAddress < ApplicationRecord
belongs_to :subproject
validates :streetname, :zipcode, :city, :country, presence: true
end

View File

@@ -0,0 +1,24 @@
<%= form_with(model: subproject_address) do |form| %>
<% if subproject_address.errors.any? %>
<div style="color: red">
<h2><%= pluralize(subproject_address.errors.count, "error") %> prohibited this client from being saved:</h2>
<ul>
<% subproject_address.errors.each do |error| %>
<li><%= error.full_message %></li>
<% end %>
</ul>
</div>
<% end %>
<% [:streetname, :zipcode, :city, :country].each do |attrib| %>
<div>
<%= form.label attrib, style: "display: block" %>
<%= form.text_field attrib %>
</div>
<% end %>
<div>
<%= form.submit %>
</div>
<% end %>

View File

@@ -0,0 +1,22 @@
<div id="<%= dom_id subproject_address %>">
<p>
<strong>Streetname:</strong>
<%= subproject_address.streetname %>
</p>
<p>
<strong>Zipcode:</strong>
<%= subproject_address.zipcode %>
</p>
<p>
<strong>City:</strong>
<%= subproject_address.city %>
</p>
<p>
<strong>Country:</strong>
<%= subproject_address.country %>
</p>
</div>

View File

@@ -0,0 +1,12 @@
<% content_for :title, "Editing subproject address" %>
<h1>Editing subproject address</h1>
<%= render "form", subproject_address: @subproject_address %>
<br>
<div>
<%= link_to "Show this subproject address", @subproject_address %> |
<%= link_to "Back to subproject addresses", subproject_addresses_path %>
</div>

View File

@@ -0,0 +1,18 @@
<p style="color: green"><%= notice %></p>
<% content_for :title, "Subproject addresses" %>
<h1>Subproject addresses</h1>
<div id="subproject_addresses">
<% @subproject_addresses.each do |subproject_address| %>
<%= render subproject_address %>
<p>
<%= link_to "Show this subproject address", subproject_address %>
</p>
<% end %>
</div>
<%= link_to "New subproject address", new_subproject_address_path %>
<%= link_to "Back to main", "/" %>

View File

@@ -0,0 +1,11 @@
<% content_for :title, "New subproject address" %>
<h1>New subproject address</h1>
<%= render "form", subproject_address: @subproject_address %>
<br>
<div>
<%= link_to "Back to subproject addresses", subproject_addresses_path %>
</div>

View File

@@ -0,0 +1,10 @@
<p style="color: green"><%= notice %></p>
<%= render @subproject_address %>
<div>
<%= link_to "Edit this subproject address", edit_subproject_address_path(@subproject_address) %> |
<%= link_to "Back to subproject addresses", subproject_addresses_path %>
<%= button_to "Destroy this subproject address", @subproject_address, method: :delete %>
</div>

View File

@@ -1,6 +1,7 @@
Rails.application.routes.draw do
resources :clients
resources :subprojects
resources :subproject_addresses
resources :projects
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html

View File

@@ -0,0 +1,13 @@
class CreateSubprojectAddresses < ActiveRecord::Migration[8.0]
def change
create_table :subproject_addresses do |t|
t.string :streetname
t.string :zipcode
t.string :city
t.string :country
t.text :notes
t.timestamps
end
end
end

12
db/schema.rb generated
View File

@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema[8.0].define(version: 2025_07_21_145904) do
ActiveRecord::Schema[8.0].define(version: 2025_07_22_152542) do
create_table "clients", force: :cascade do |t|
t.string "company_name"
t.string "firstname"
@@ -36,6 +36,16 @@ ActiveRecord::Schema[8.0].define(version: 2025_07_21_145904) do
t.datetime "order_date"
end
create_table "subproject_addresses", force: :cascade do |t|
t.string "streetname"
t.string "zipcode"
t.string "city"
t.string "country"
t.text "notes"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "subprojects", force: :cascade do |t|
t.string "subproject_name"
t.integer "project_id", null: false