刪除要做的事情就更簡單了
列出要做的事情吧
<h1>顯示 post 的 index 頁面</h1>
<%= link("新增文章", to: Routes.post_path(@conn, :new), class: "button") %>
<%= for post <- @posts do %>
<article>
<h2><%= post.title %></h2>
<p><%= post.body %></p>
<div>
<%= link("編輯", to: Routes.post_path(@conn, :edit, post)) %>
<%= link("刪除",
to: Routes.post_path(@conn, :delete, post),
method: :delete,
data: [confirm: "確定嗎?"]
) %>
<%= link("閱讀更多", to: Routes.post_path(@conn, :show, post)) %>
</div>
</article>
<% end %>
來看一下 這次的 link
方法
link("刪除", to: Routes.post_path(@conn, :delete, post), method: :delete, data: [confirm: "確定嗎?"])
因應我們這次要呼叫 delete 路徑要用的是 delete 方法,所以這邊要加 method: :delete
另外 data: [confirm: "確定嗎?"]
在產生的 html 會變成 data-confirm="確定嗎?"
這個會跳出瀏覽器的 confirm 對話框來提醒,確定的話才會送出
編輯 PostController 加上 delete 方法
def delete(conn, %{"id" => id}) do
# 拿到要刪除的 post
post = Posts.get_post(id)
# 刪除 post
{:ok, _post} = Posts.delete_post(post)
# 跳轉到 index
redirect(conn, to: Routes.post_path(conn, :index))
end