From f6778557882e15c70ce6adf77717a85c9533b1f0 Mon Sep 17 00:00:00 2001 From: Li Dai Date: Wed, 20 Jan 2021 18:24:53 -0800 Subject: [PATCH] added create action for video --- app/controllers/videos_controller.rb | 14 ++++++++++++++ config/routes.rb | 2 +- package.json | 2 ++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/app/controllers/videos_controller.rb b/app/controllers/videos_controller.rb index c9a2bb08..a3b99825 100644 --- a/app/controllers/videos_controller.rb +++ b/app/controllers/videos_controller.rb @@ -21,6 +21,16 @@ def show ) end + def create + video = Video.new(video_params) + if video.save + render status: :ok, json: video.as_json(only: [:id, :title, :overview, :release_date, :image_url, :external_id]) + else + render status: :bad_request, json: { errors: video.errors.messages } + end + end + + private def require_video @@ -29,4 +39,8 @@ def require_video render status: :not_found, json: { errors: { title: ["No video with title #{params["title"]}"] } } end end + + def video_params + return params.require(:video).permit(:title, :overview, :release_date, :inventory, :image_url, :external_id) + end end diff --git a/config/routes.rb b/config/routes.rb index 16fc2214..1111b4bf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,7 +3,7 @@ resources :customers, only: [:index] - resources :videos, only: [:index, :show], param: :title + resources :videos, only: [:index, :show, :create], param: :title post "/rentals/:title/check-out", to: "rentals#check_out", as: "check_out" post "/rentals/:title/return", to: "rentals#check_in", as: "check_in" diff --git a/package.json b/package.json index 02f3e3b8..2bc47f9f 100644 --- a/package.json +++ b/package.json @@ -7,12 +7,14 @@ "test": "clear; jasmine-node --verbose test/" }, "dependencies": { + "axios": "^0.21.1", "body-parser": "~1.19.0", "cookie-parser": "~1.4.5", "debug": "~4.3.1", "express": "~4.17.1", "jade": "~1.11.0", "morgan": "~1.10.0", + "react-router-dom": "^5.2.0", "sequelize": "^6.3.5", "serve-favicon": "~2.5.0" },