parent/child CRUD complete
This commit is contained in:
parent
0510f1c4c2
commit
7afe8d137c
@ -4,5 +4,43 @@ class ChildrenController < ApplicationController
|
|||||||
respond_with @children
|
respond_with @children
|
||||||
end
|
end
|
||||||
|
|
||||||
def lookup; end
|
def show
|
||||||
|
@child = Child.includes(:parents).find_by_id(params[:id])
|
||||||
|
@parents = Person.order(:first_name, :last_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
def new
|
||||||
|
@child = Child.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
@child = Child.find_by_id(params[:id])
|
||||||
|
end
|
||||||
|
|
||||||
|
def add
|
||||||
|
@child = Child.create child_params
|
||||||
|
if @child.persisted?
|
||||||
|
redirect_to child_path(@child), notice: 'Created!'
|
||||||
|
else
|
||||||
|
render :new
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@child = Child.find_by_id params[:id]
|
||||||
|
if @child.update child_params
|
||||||
|
redirect_to child_path(@child), notice: 'Updated!'
|
||||||
|
else
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def child_params
|
||||||
|
params.require(:child).permit(
|
||||||
|
:first_name,
|
||||||
|
:last_name
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
class DocsController < ApplicationController
|
class DocsController < ApplicationController
|
||||||
def index
|
def index
|
||||||
@doc = {
|
@doc = {
|
||||||
name: "sms-pager-api",
|
name: "sms-pager",
|
||||||
documentation: "https://bitbucket.org/markamoser/sms-pager-api"
|
documentation: "https://bitbucket.org/markamoser/sms-pager"
|
||||||
}
|
}
|
||||||
respond_with @doc
|
respond_with @doc
|
||||||
end
|
end
|
||||||
|
@ -15,7 +15,7 @@ class ParentsController < ApplicationController
|
|||||||
end
|
end
|
||||||
|
|
||||||
def add
|
def add
|
||||||
@parent = Person.create add_parent_params
|
@parent = Person.create parent_params
|
||||||
|
|
||||||
if @parent.persisted?
|
if @parent.persisted?
|
||||||
redirect_to parent_path(@parent), notice: 'Success!'
|
redirect_to parent_path(@parent), notice: 'Success!'
|
||||||
@ -30,9 +30,19 @@ class ParentsController < ApplicationController
|
|||||||
@more_children = Child.all
|
@more_children = Child.all
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
@parent = Person.find(params[:id])
|
||||||
|
|
||||||
|
if @parent.update(parent_params)
|
||||||
|
redirect_to parent_path(@parent), notice: 'Success!'
|
||||||
|
else
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def add_parent_params
|
def parent_params
|
||||||
params.require(:parent).permit(
|
params.require(:parent).permit(
|
||||||
:first_name,
|
:first_name,
|
||||||
:last_name,
|
:last_name,
|
||||||
|
@ -13,7 +13,7 @@ class Person < ActiveRecord::Base
|
|||||||
|
|
||||||
scope :just_parents, lambda {
|
scope :just_parents, lambda {
|
||||||
joins(:children)
|
joins(:children)
|
||||||
.order(:first_name)
|
.order(:first_name, :last_name)
|
||||||
.uniq
|
.uniq
|
||||||
}
|
}
|
||||||
|
|
||||||
|
14
app/views/children/_form.html.haml
Normal file
14
app/views/children/_form.html.haml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
- if @child.errors.full_messages.any?
|
||||||
|
.errors
|
||||||
|
%h1 Uh oh!
|
||||||
|
- @child.errors.full_messages.each do |error|
|
||||||
|
%p= error
|
||||||
|
|
||||||
|
= form_for @child, as: :child, url: add_child_path do |f|
|
||||||
|
= f.label :first_name
|
||||||
|
= f.text_field :first_name
|
||||||
|
|
||||||
|
= f.label :last_name
|
||||||
|
= f.text_field :last_name
|
||||||
|
|
||||||
|
= f.submit
|
@ -1,3 +1,4 @@
|
|||||||
%ul.sub-nav
|
%ul.sub-nav
|
||||||
%li= link_to 'look up', lookup_child_path
|
%li= link_to 'List', list_children_path
|
||||||
|
%li= link_to 'New', new_child_path
|
||||||
|
|
||||||
|
5
app/views/children/edit.html.haml
Normal file
5
app/views/children/edit.html.haml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
%h2 Edit #{@child.name}
|
||||||
|
|
||||||
|
%p= link_to 'back', child_path(@child)
|
||||||
|
|
||||||
|
= render partial: 'form'
|
@ -2,7 +2,11 @@
|
|||||||
|
|
||||||
- @children.each do |child|
|
- @children.each do |child|
|
||||||
%ul
|
%ul
|
||||||
%li= child.name
|
%li
|
||||||
|
= link_to child.name, child_path(child)
|
||||||
|
= link_to 'edit', edit_child_path(child)
|
||||||
%ul
|
%ul
|
||||||
- child.parents.each do |parent|
|
- child.parents.each do |parent|
|
||||||
%li #{parent.name} #{page_link(parent)}
|
%li
|
||||||
|
= link_to parent.name, parent_path(parent)
|
||||||
|
= page_link(parent)
|
||||||
|
3
app/views/children/new.html.haml
Normal file
3
app/views/children/new.html.haml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
%h2 Add a New Child
|
||||||
|
|
||||||
|
= render partial: 'form'
|
18
app/views/children/show.html.haml
Normal file
18
app/views/children/show.html.haml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
%h2= @child.name
|
||||||
|
%p= link_to 'edit', edit_child_path(@child)
|
||||||
|
|
||||||
|
- unless @child.parents.empty?
|
||||||
|
%p Parents:
|
||||||
|
%ul
|
||||||
|
- @child.parents.each do |parent|
|
||||||
|
%li
|
||||||
|
= link_to parent.name, parent_path(parent)
|
||||||
|
= link_to 'remove', del_parenthood_path(parent, @child), method: :delete
|
||||||
|
|
||||||
|
%p Add Parent:
|
||||||
|
= form_tag add_parent_to_child_path(@child) do
|
||||||
|
:ruby
|
||||||
|
select_options = options_from_collection_for_select(@parents, :id, :name)
|
||||||
|
html_options = { include_blank: true }
|
||||||
|
= select_tag(:parent, select_options, html_options)
|
||||||
|
= submit_tag 'Add Parent to Child'
|
@ -1,4 +1,2 @@
|
|||||||
%h2 Something helpful later
|
%h2 Something helpful later
|
||||||
|
|
||||||
%p= raw(ap @doc)
|
%p= raw(ap @doc)
|
||||||
|
|
||||||
|
24
app/views/parents/edit.html.haml
Normal file
24
app/views/parents/edit.html.haml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
%h2 Edit #{@parent.name}
|
||||||
|
|
||||||
|
%p= link_to 'back', parent_path(@parent)
|
||||||
|
|
||||||
|
- if @parent.errors.full_messages.any?
|
||||||
|
.errors
|
||||||
|
%h1 Uh oh!
|
||||||
|
- @parent.errors.full_messages.each do |e|
|
||||||
|
%p= e
|
||||||
|
|
||||||
|
= form_for @parent, as: :parent, url: update_parent_path do |f|
|
||||||
|
= f.label :first_name
|
||||||
|
= f.text_field :first_name
|
||||||
|
|
||||||
|
= f.label :last_name
|
||||||
|
= f.text_field :last_name
|
||||||
|
|
||||||
|
= f.label :phone
|
||||||
|
= f.phone_field :phone
|
||||||
|
|
||||||
|
= f.label :email
|
||||||
|
= f.email_field :email
|
||||||
|
|
||||||
|
= f.submit
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
- @parents.each do |parent|
|
- @parents.each do |parent|
|
||||||
%ul
|
%ul
|
||||||
|
%li= link_to parent.name, parent_path(parent)
|
||||||
%li
|
%li
|
||||||
= link_to parent.name, parent_path(parent)
|
= number_to_phone parent.phone
|
||||||
= page_link(parent)
|
= page_link(parent)
|
||||||
%li= number_to_phone parent.phone
|
%li= mail_to parent.email, nil, encode: 'hex'
|
||||||
%li= mail_to parent.email
|
|
||||||
%li Children:
|
%li Children:
|
||||||
%ul
|
%ul
|
||||||
- parent.children.each do |child|
|
- parent.children.each do |child|
|
||||||
%li= child.name
|
%li= link_to child.name, child_path(child)
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
%ul
|
%ul
|
||||||
- @parent.children.each do |child|
|
- @parent.children.each do |child|
|
||||||
%li
|
%li
|
||||||
= child.name
|
= link_to child.name, child_path(child)
|
||||||
= link_to 'remove', del_parenthood_path(@parent, child), method: :delete
|
= link_to 'remove', del_parenthood_path(@parent, child), method: :delete
|
||||||
|
|
||||||
%p Add Child:
|
%p Add Child:
|
||||||
|
@ -1,2 +1 @@
|
|||||||
%ul.sub-nav
|
-# %ul.sub-nav
|
||||||
|
|
||||||
|
@ -1,2 +1 @@
|
|||||||
%ul.sub-nav
|
-# %ul.sub-nav
|
||||||
|
|
||||||
|
@ -1,16 +1,21 @@
|
|||||||
Rails.application.routes.draw do
|
Rails.application.routes.draw do
|
||||||
get 'parents', to: 'parents#index', as: :list_parents
|
get 'parents', to: 'parents#index', as: :list_parents
|
||||||
get 'parents/new', to: 'parents#new', as: :new_parent
|
get 'parent/new', to: 'parents#new', as: :new_parent
|
||||||
post 'parents/new', to: 'parents#add', as: :add_parent
|
post 'parent/new', to: 'parents#add', as: :add_parent
|
||||||
get 'parents/edit/:id', to: 'parents#edit', as: :edit_parent
|
get 'parent/edit/:id', to: 'parents#edit', as: :edit_parent
|
||||||
get 'parents/:id', to: 'parents#show', as: :parent
|
get 'parent/:id', to: 'parents#show', as: :parent
|
||||||
post 'parents/:id', to: 'parents#update', as: :update_parent
|
patch 'parent/:id', to: 'parents#update', as: :update_parent
|
||||||
|
|
||||||
|
post 'parenthood/child/:child', to: 'relationships#add_child', as: :add_parent_to_child
|
||||||
post 'parenthood/:parent/', to: 'relationships#add_child', as: :add_parenthood
|
post 'parenthood/:parent/', to: 'relationships#add_child', as: :add_parenthood
|
||||||
delete 'parenthood/:parent/:child', to: 'relationships#del_child', as: :del_parenthood
|
delete 'parenthood/:parent/:child', to: 'relationships#del_child', as: :del_parenthood
|
||||||
|
|
||||||
get 'children', to: 'children#index', as: :list_children
|
get 'children', to: 'children#index', as: :list_children
|
||||||
get 'children/lookup', to: 'children#lookup', as: :lookup_child
|
get 'child/new', to: 'children#new', as: :new_child
|
||||||
|
post 'child/new', to: 'children#add', as: :add_child
|
||||||
|
get 'childdit/:id', to: 'children#edit', as: :edit_child
|
||||||
|
get 'child/:id', to: 'children#show', as: :child
|
||||||
|
patch 'child/:id', to: 'children#update', as: :update_child
|
||||||
|
|
||||||
get 'staff', to: 'staff#index', as: :list_staff
|
get 'staff', to: 'staff#index', as: :list_staff
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user