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