From 8759a9062c12ce19b54914b2a7980b7a8b0c0a65 Mon Sep 17 00:00:00 2001 From: Trevor Vallender Date: Thu, 5 Oct 2023 19:05:53 +0100 Subject: [PATCH] Complete CRUD actions for microposts --- app/controllers/microposts_controller.rb | 20 +++++++++++++++++++- app/views/microposts/_micropost.html.erb | 1 + app/views/microposts/edit.html.erb | 10 ++++++++++ config/locales/controllers/microposts/en.yml | 2 ++ config/locales/views/microposts/en.yml | 4 ++++ config/routes.rb | 2 +- 6 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 app/views/microposts/edit.html.erb diff --git a/app/controllers/microposts_controller.rb b/app/controllers/microposts_controller.rb index 6b5ad96..be05e3a 100644 --- a/app/controllers/microposts_controller.rb +++ b/app/controllers/microposts_controller.rb @@ -2,7 +2,7 @@ class MicropostsController < ApplicationController skip_before_action :require_login, only: [:index, :show] - before_action :set_micropost, only: [:show] + before_action :set_micropost, only: [:show, :edit, :update, :destroy] def index @microposts = Micropost.all.order(created_at: :desc) @@ -24,6 +24,24 @@ class MicropostsController < ApplicationController def show; end + def edit; end + + def update + if @micropost.update(micropost_params) + redirect_to @micropost, notice: t(".updated") + else + render :edit, status: :unprocessable_entity + end + end + + def destroy + if @micropost.destroy + redirect_to microposts_path, notice: t(".deleted") + else + render :edit, status: :unprocessable_entity + end + end + private def micropost_params diff --git a/app/views/microposts/_micropost.html.erb b/app/views/microposts/_micropost.html.erb index 3376cbf..e32326e 100644 --- a/app/views/microposts/_micropost.html.erb +++ b/app/views/microposts/_micropost.html.erb @@ -1,6 +1,7 @@
<%= micropost.content %>
+ <%= link_to "Edit", edit_micropost_path(micropost) if micropost.user == current_user %> <%= link_to micropost.created_at.strftime("%Y-%m-%d %H:%M"), micropost %>
diff --git a/app/views/microposts/edit.html.erb b/app/views/microposts/edit.html.erb new file mode 100644 index 0000000..eb3e5f1 --- /dev/null +++ b/app/views/microposts/edit.html.erb @@ -0,0 +1,10 @@ +<% @title = t(".edit") %> + +<%= render partial: "form", + locals: { + user: @user, + button_text: t(".edit"), + title: t(".edit"), + } %> + +<%= link_to t(".delete"), @micropost, data: { turbo_method: :delete, turbo_confirm: t(".confirm") } %> diff --git a/config/locales/controllers/microposts/en.yml b/config/locales/controllers/microposts/en.yml index 985d074..92c2876 100644 --- a/config/locales/controllers/microposts/en.yml +++ b/config/locales/controllers/microposts/en.yml @@ -1,3 +1,5 @@ en: microposts: created: Successfully created μpost + updated: Successfully updated μpost + deleted: Successfully deleted μpost diff --git a/config/locales/views/microposts/en.yml b/config/locales/views/microposts/en.yml index d32f8ea..e5ba810 100644 --- a/config/locales/views/microposts/en.yml +++ b/config/locales/views/microposts/en.yml @@ -6,4 +6,8 @@ en: new: New μpost new: create: Create μpost + edit: + edit: Edit μpost + delete: Delete μpost + confirm: Are you sure you want to delete this μpost? diff --git a/config/routes.rb b/config/routes.rb index b74cf22..9e47f73 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,5 +12,5 @@ Rails.application.routes.draw do delete "log_out", to: "sessions#destroy_session" get "confirm_email", to: "email_confirmations#confirm" - resources :microposts, only: [:index, :new, :create, :show] + resources :microposts end