From 142e14743acf683a4d82382e7d072fd119270c10 Mon Sep 17 00:00:00 2001 From: KaungKaung Date: Tue, 27 Jan 2026 16:51:35 +0630 Subject: [PATCH] CRUD implementation for Projects and Tasks --- app/controllers/projects_controller.rb | 26 +++++++++++++ app/controllers/tasks_controller.rb | 53 ++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 app/controllers/tasks_controller.rb diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 1565773..3cbf145 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -19,4 +19,30 @@ class ProjectsController < ApplicationController render :new end end + + def edit + @project = Project.find(params[:id]) + end + + def update + @project = Project.find(params[:id]) + if @project.update(project_params) + redirect_to @project + else + render :edit + end + end + + def destroy + @project = Project.find(params[:id]) + @project.destroy + redirect_to projects_path + end + + + private + + def project_params + params.require(:project).permit(:project_name, :description) + end end diff --git a/app/controllers/tasks_controller.rb b/app/controllers/tasks_controller.rb new file mode 100644 index 0000000..3e56d2d --- /dev/null +++ b/app/controllers/tasks_controller.rb @@ -0,0 +1,53 @@ +class TasksController < ApplicationController + def index + @project = Project.find(params[:project_id]) + @tasks = @project.tasks + end + + def show + @project = Project.find(params[:project_id]) + @task = @project.tasks.find(params[:id]) + end + + def new + @project = Project.find(params[:project_id]) + @task = @project.tasks.new + end + + def create + @project = Project.find(params[:project_id]) + @task = @project.tasks.new(task_params) + if @task.save + redirect_to project_task_path(@project, @task) + else + render :new + end + end + + def edit + @project = Project.find(params[:project_id]) + @task = @project.tasks.find(params[:id]) + end + + def update + @project = Project.find(params[:project_id]) + @task = @project.tasks.find(params[:id]) + if @task.update(task_params) + redirect_to project_task_path(@project, @task) + else + render :edit + end + end + + def destroy + @project = Project.find(params[:project_id]) + @task = @project.tasks.find(params[:id]) + @task.destroy + redirect_to project_tasks_path(@project) + end + + private + def task_params + params.require(:task).permit(:title, :description, :status) + end +end