diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 288b9ab..f6b6c89 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -13,3 +13,18 @@ *= require_tree . *= require_self */ + +nav { + border-bottom: 1px solid #ffffff; +} + +nav ul { + margin: 0; + padding: 10px 0; +} + +nav ul li { + display: inline-block; + list-style-type: none; + padding-right: 20px; +} diff --git a/app/controllers/breeds_controller.rb b/app/controllers/breeds_controller.rb new file mode 100644 index 0000000..7753334 --- /dev/null +++ b/app/controllers/breeds_controller.rb @@ -0,0 +1,8 @@ + + +class BreedsController < ApplicationController + def show + id = Breed.find_by(name: params[:name]).id + @data = DogApiService.get_breed(id)['data'] + end +end diff --git a/app/controllers/owners_controller.rb b/app/controllers/owners_controller.rb new file mode 100644 index 0000000..377c420 --- /dev/null +++ b/app/controllers/owners_controller.rb @@ -0,0 +1,70 @@ +class OwnersController < ApplicationController + before_action :set_owner, only: %i[ show edit update destroy ] + + # GET /owners or /owners.json + def index + @owners = Owner.all + end + + # GET /owners/1 or /owners/1.json + def show + end + + # GET /owners/new + def new + @owner = Owner.new + end + + # GET /owners/1/edit + def edit + end + + # POST /owners or /owners.json + def create + @owner = Owner.new(owner_params) + + respond_to do |format| + if @owner.save + format.html { redirect_to owner_url(@owner), notice: "Owner was successfully created." } + format.json { render :show, status: :created, location: @owner } + else + format.html { render :new, status: :unprocessable_entity } + format.json { render json: @owner.errors, status: :unprocessable_entity } + end + end + end + + # PATCH/PUT /owners/1 or /owners/1.json + def update + respond_to do |format| + if @owner.update(owner_params) + format.html { redirect_to owner_url(@owner), notice: "Owner was successfully updated." } + format.json { render :show, status: :ok, location: @owner } + else + format.html { render :edit, status: :unprocessable_entity } + format.json { render json: @owner.errors, status: :unprocessable_entity } + end + end + end + + # DELETE /owners/1 or /owners/1.json + def destroy + @owner.destroy! + + respond_to do |format| + format.html { redirect_to owners_url, notice: "Owner was successfully destroyed." } + format.json { head :no_content } + end + end + + private + # Use callbacks to share common setup or constraints between actions. + def set_owner + @owner = Owner.find(params[:id]) + end + + # Only allow a list of trusted parameters through. + def owner_params + params.require(:owner).permit(:name) + end +end diff --git a/app/controllers/pets_controller.rb b/app/controllers/pets_controller.rb index 8db2d0b..28b0b81 100644 --- a/app/controllers/pets_controller.rb +++ b/app/controllers/pets_controller.rb @@ -65,6 +65,6 @@ def set_pet # Only allow a list of trusted parameters through. def pet_params - params.require(:pet).permit(:name, :kind, :breed) + params.require(:pet).permit(:name, :kind, :breed, :weight, :owner_id) end end diff --git a/app/models/breed.rb b/app/models/breed.rb new file mode 100644 index 0000000..ee48016 --- /dev/null +++ b/app/models/breed.rb @@ -0,0 +1,3 @@ +class Breed < ApplicationRecord + +end diff --git a/app/models/owner.rb b/app/models/owner.rb new file mode 100644 index 0000000..510c4d4 --- /dev/null +++ b/app/models/owner.rb @@ -0,0 +1,4 @@ +class Owner < ApplicationRecord + + has_many :pets, dependent: :destroy +end diff --git a/app/models/pet.rb b/app/models/pet.rb index d1efb8a..1eee4f2 100644 --- a/app/models/pet.rb +++ b/app/models/pet.rb @@ -1,2 +1,4 @@ class Pet < ApplicationRecord + + belongs_to :owner end diff --git a/app/services/dog_api_service.rb b/app/services/dog_api_service.rb new file mode 100644 index 0000000..5d176ca --- /dev/null +++ b/app/services/dog_api_service.rb @@ -0,0 +1,17 @@ +require 'net/http' + +class DogApiService + + def self.list_breeds(page=1) + uri = URI("https://dogapi.dog/api/v2/breeds?page[number]=#{page}") + response = Net::HTTP.get_response(uri) + JSON.parse(response.body) + end + + def self.get_breed(id) + uri = URI.parse("https://dogapi.dog/api/v2/breeds/#{id}") + response = Net::HTTP.get_response(uri) + JSON.parse(response.body) + end + +end diff --git a/app/views/breeds/show.html.erb b/app/views/breeds/show.html.erb new file mode 100644 index 0000000..62473b5 --- /dev/null +++ b/app/views/breeds/show.html.erb @@ -0,0 +1,13 @@ +
+ id: <%= @data['id'] %> +
+ ++ name: <%= @data['attributes']['name'] %> +
+ ++ description: <%= @data['attributes']['description'] %> +
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 1cd1804..817e15e 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -11,6 +11,17 @@ + + + +