LoginSignup
0
2

More than 1 year has passed since last update.

Rails コントローラーのアクションについて

Last updated at Posted at 2021-09-05

アクションとは

ユーザーからリクエストを受けたときサーバー側でどのような処理をするのかを
アクション(動作)と言います。
アクションはapp/controllers/〜controller.rbつまりコントローラーの中に作成されます。
今回のコントローラーはsportsコントローラーにします。

sports_controller.rb

    class SportsController < ApplicationController

    def baseball

        render  plain: "野球"
    end


⚫︎補足
render plainを使うとブラウザで表示できる。

routes.rb
Rails.application.routes.draw do

get "/yakyu", to:"sports#baseball"

end

railsサーバーを起動
localhost/3000/yakyuでブラウザには野球と表示されます。

ルーティングの中身を見てみると/yakyuをURLで指定すると
Sportsコントローラーの中のbaseballメソッドが呼び出されている
わけえです。

下ではそれぞれよく使うアクションを見ながら
見ていきましょう。

indexアクション

Indexアクションは主に一覧表示やトップページがよばれた時に使います。

sports_controller.rb
    def  index
     @sports = Sports.all
    end

@sports = Sports.allはコントローラーからスポーツの一覧を全部取ってきてくれという
指示を出しているコ意味です。
HTTPはGETです。

⚫︎補足
@はインスタンス変数と言います。これはviewに渡せる変数のことです。

例えば

sports_controller.rb

    def  index
    @sports = "サッカー"
    end
index.html.erb
  <h1> <%= @sports %></h1>

とするとサッカーと出力されます。

show

Showアクションは指定したデータを表示する。投稿の詳細ページを作るときに使います。

sports_controller.rb

    def  show
     @player= Player.find(params[:id])  #idに合致した値を取得してほしい
         @sports = Sports.where(sports_id: params[:id])
         end

Viewからの送信値(params)を元にデータを探しViewに返却します。
[:]は取得したい値によって変わる。 HTTPは**GETされた時*に使います。

new

newアクションは新規作成された時に使います。

sports_controller.rb
        def  new
        @players = Player.new #新しいデータを作成する
    end

@players = Player.newはコントローラーに新しくplayerのデータを作成する意味です。
データ作成するためのフォームが呼ばれます。
つまりこれからデータを作成するという宣言でもあります。

HTTPはGETです。

create

createアクションはデータを新規作成して追加(保存)する時使います。

sports_controller.rb

    def  create
        Sports.create#省略
       redirect_to "/"
       end

他にも

sports_controller.rb
  def  create
       @sports.new(params[:id]) #データを作る
       @sports.save  #データを保存

       #または
       Sports.create(params[:id] #データを作りたいだけならこのコードのみ
  end

上のviewから送られてきたparamsの中に登録したいデータを入れます
その中のデータがコントローラーに処理が送られていくイメージです。

⚫︎補足
paramsとはパラメーターのことで、変数のことです。例えば入力フォームから送られてくる値のことです。

HTTPはPOSTされた時使います。。

edit

editアクションはデータを更新するためのフォームを表示する時に使います。

sports_controller.rb

      def  edit
    @sports = Sports.find(params["id"])
      end

HTTPはGETされた時使います。

update

updateアクションは更新する時に使います。

sports_controller.rb

    def  update
    sports = Sports.find(params[:id]) #どのデータを更新する?
        @sports.update(params[:XX]) #更新データ
        #省略
                end

HTTPはPATCHかPUTされた時使います。

destroy

destroyアクションは削除する時に使います。

sports_controller.rb

    def  destroy
     sports = Sports.find(params[:id])
         sports.destroy
         redirect_to "/"

    end

HTTPはDELETEされた時使います。

HTTPの説明はこちらから
https://qiita.com/Hashimoto-Noriaki/items/6b83ee8f6cf6a79c4b49

⚫︎参考資料
https://qiita.com/kidach1/items/43e53811c12351915278

0
2
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
2