見出し画像

Rails7つのアクションとは?

前回MVCモデルをまとめている時にRails7つのアクションに
触れていませんでした。
前回の記事 → https://note.com/john01/n/nb3888c1efb20
『7つのアクション』とはControllerに記述する時に使用します。
このアクション名だったらこんな処理をするだろうなと
後から見た時に分かりやすくなり可読性が上がります

7つのアクション一覧
・index・・・一覧表示
・show・・・詳細表示
・new・・・新規作成画面
・create・・・新規作成情報を定着させる
・edit・・・編集画面
・update・・・編集情報を定着
・destroy・・・削除

1つ目のアクション(index)

サイトのトップページを作成する時に使用するアクション
とりあえずページ表示させようと思ったら
controllerにindexアクション書いて
routes.rbにパス通してviewsにindex.html作成すればOK

rails g controller home index

ちなみにcontroller作成時にindex等、アクション名をつけてあげると
routes.rbにパス通してくれて、Viewsにindexファイルを作ってくれます。

スクリーンショット 2020-06-16 8.02.55

こんな感じですね。SCSSファイルまで作ってくれました。

2つ目のアクション(show)

作成したトップページから詳細なページを作成したい時に使用
例えばユーザーが投稿した内容のうち
画像だけが一覧ページにズラーっと並んでいて
クリックして投稿内容が見たい場合に使用します。

--app/controller/tweets_controller.rb--

def show
   @tweet = Tweet.find(params[:id])
end

このような記述をすることによって投稿内容詳細ページへ飛べるようになります。あとはビューを作成すれば表示されます。
@tweetの中にはTweetテーブルのレコードが代入されているので
呼び出し先で@tweet.nameなどカラム名を指定すると
そのカラム名が表示されます。

3つ目、4つ目のアクション(new,create)

rails7つのアクションを覚える時のアハ体験です。
なかなか理解できずに苦しんでいましたが
セットで覚えてしまえば簡単だ!という結論に至りました。
ブログアプリ等で何かを投稿する時にフォームに入力すると思いますが
あれがnewアクション
そして『投稿』ボタンを押してテーブルに保存するのが
createアクションです。

今現在僕がnoteに書いているこのページはnewアクションですね。
そして、公開を押すとテーブルに保存されて
一覧に表示されるようになります。

5つ目、6つ目のアクション(edit,update)

こちらもnew,createと同じ理屈ですね。
投稿した内容を編集するのがeditアクション
そして編集した内容をデータベースへ反映させるのが
updateアクションになります。

このことからnewとeditアクションにはViewsファイルが必要な事がわかります。単純な事かもしれませんが、railsを勉強し始めの頃にこれを発見して
一気に理解度が上がりました。

7つ目のアクション(destroy)

最後はリソースを削除するアクションです。
投稿内容を削除する時に使用します。

--controller--
def destroy
   tweet = Tweet.find(params[:id])
   tweet.destroy
 end

削除機能はビューに情報を受け渡す必要がないため
ただの変数に代入しています。

--Views--
<%= link_to '削除', "/tweets/#{tweet.user_id}", method: :delete %>
ビューに削除ボタンを作成したら最後にmethodを追加してあげないと機能しないので注意してください。

以上が7つのアクションです。
このアクションに当てはまらないなーと感じたら自作でもOKです。
ただその場合、routes.rbへの記述の仕方が少し変わります。
そんなに難しくはないので次回まとめてみます。

ここまで読んでいただきありがとうございました。
記事を書いていると理解できていない部分が浮き彫りになり
そこをググって補完しています。
『アウトプットは最高のインプット』とはよく言ったものですね。
これからも良質なインプットを定着させるためにも
アウトプットを続けていきます。


この記事が気に入ったらサポートをしてみませんか?