parent/child CRUD complete

This commit is contained in:
2015-10-03 19:16:46 -05:00
parent 0510f1c4c2
commit 7afe8d137c
17 changed files with 144 additions and 26 deletions

View File

@ -4,5 +4,43 @@ class ChildrenController < ApplicationController
respond_with @children
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

View File

@ -1,8 +1,8 @@
class DocsController < ApplicationController
def index
@doc = {
name: "sms-pager-api",
documentation: "https://bitbucket.org/markamoser/sms-pager-api"
name: "sms-pager",
documentation: "https://bitbucket.org/markamoser/sms-pager"
}
respond_with @doc
end

View File

@ -15,7 +15,7 @@ class ParentsController < ApplicationController
end
def add
@parent = Person.create add_parent_params
@parent = Person.create parent_params
if @parent.persisted?
redirect_to parent_path(@parent), notice: 'Success!'
@ -30,9 +30,19 @@ class ParentsController < ApplicationController
@more_children = Child.all
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
def add_parent_params
def parent_params
params.require(:parent).permit(
:first_name,
:last_name,

View File

@ -13,7 +13,7 @@ class Person < ActiveRecord::Base
scope :just_parents, lambda {
joins(:children)
.order(:first_name)
.order(:first_name, :last_name)
.uniq
}

View 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

View File

@ -1,3 +1,4 @@
%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

View File

@ -0,0 +1,5 @@
%h2 Edit #{@child.name}
%p= link_to 'back', child_path(@child)
= render partial: 'form'

View File

@ -2,7 +2,11 @@
- @children.each do |child|
%ul
%li= child.name
%li
= link_to child.name, child_path(child)
= link_to 'edit', edit_child_path(child)
%ul
- child.parents.each do |parent|
%li #{parent.name} #{page_link(parent)}
%li
= link_to parent.name, parent_path(parent)
= page_link(parent)

View File

@ -0,0 +1,3 @@
%h2 Add a New Child
= render partial: 'form'

View 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'

View File

@ -1,4 +1,2 @@
%h2 Something helpful later
%p= raw(ap @doc)

View 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

View File

@ -2,12 +2,12 @@
- @parents.each do |parent|
%ul
%li= link_to parent.name, parent_path(parent)
%li
= link_to parent.name, parent_path(parent)
= number_to_phone parent.phone
= page_link(parent)
%li= number_to_phone parent.phone
%li= mail_to parent.email
%li= mail_to parent.email, nil, encode: 'hex'
%li Children:
%ul
- parent.children.each do |child|
%li= child.name
%li= link_to child.name, child_path(child)

View File

@ -8,7 +8,7 @@
%ul
- @parent.children.each do |child|
%li
= child.name
= link_to child.name, child_path(child)
= link_to 'remove', del_parenthood_path(@parent, child), method: :delete
%p Add Child:

View File

@ -1,2 +1 @@
%ul.sub-nav
-# %ul.sub-nav

View File

@ -1,2 +1 @@
%ul.sub-nav
-# %ul.sub-nav