0
1

投稿機能アプリの削除機能

Posted at

備忘録としてあげさせていただきました。

目的

  • CRUDのD(DELETE)を体験
  • データの操作で基本的な処理となる「削除」を理解
  • destroyアクションを理解
  • Prefix

削除機能

7つのアクションのうち、削除機能はdestroyが該当

実装の流れ

  1. ツイートを削除するためのルーティングを設定 
  2. 削除ボタンをビューに追加
  3. destroyアクションをコントローラーに定義する

destroyアクションのルーティング設定

config/routes.rb

 resources :tweets, only: [:index, :new, :create, :destroy]

削除ボタンを投稿一覧に追加

linl_tomメソッドを使い、削除ボタンを追加
削除ボタンのパスには **ツイートのid**を パラメーターとして持たせる
/tweets/《tweetのid》というパスにすると、パラメーターとして受け取ることができる

HTTP: DELETE メソッド
「data:{turbo_method::delete
app/views/tweets/index.html.erb
<span><%= image_tag 'arrow_top.png' %></span>
<%= link_to '削除', "/tweets/#{tweet.id}", data: { turbo_method: :delete } %>

image_tag

imgタグを生成するためのRailsのヘルパーメソッド.。第一引数にapp/assets/images配下、もしくは、public配下の画像を指定

<span><%= image_tag 'arrow_top.png' %></span>
=> <span><img src="assets/arrow_top.png" /></span>

link_tおの遷移先をPrefixで指定

Prefixとは?

ルーティングのURI Patternに名前をつけて変化させたもの
ターミナルのrails routesコマンドを実行したら見れる

このPrefix名に続けて_pathと記述を付け加えることによって、URI Patternのパス値して認識される

'/' => root_path

Preixを用いて遷移先を設定
app/views/tweets/index.html.erb

<%= link_to '削除', tweet_path(tweet.id), data: { turbo_method: :delete } %>

destroyアクションをコントローラに定義

ツイートを削除する際にはモデルのdestroyメソッド使用
params[:id]を使用し、削除したいツイートの情報を取得
この時のparams[:id]は先ほどPrefixで指定したパスであるtweet_path(tweet.id)
tweet/idに当たる数字が入ります

  def destroy
    tweet = Tweet.find(params[:id])
    tweet.destroy
    redirect_to root_path
  end

ビューにツイート情報を受け渡さないので、インスタンス変数ではなくただの変数として置く

処理の流れ

パラメータとして受け取ったparams[:id]を元に、削除したいツイートをfindメソッドを用いて取得します
そして、そのツイートをdestroyメソッドで削除する。
削除した後はトップ画面を表示するためにredirect_toメソッドを使用している

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1