アクションとは
ユーザーからリクエストを受けたときサーバー側でどのような処理をするのかを
アクション(動作) と言います。
アクションはapp/controllers/〜controller.rbつまりコントローラーの中に作成されます。
今回のコントローラーはsportsコントローラーにします。
class SportsController < ApplicationController
def baseball
render plain: "野球"
end
⚫︎補足
render plainを使うとブラウザで表示できる。
Rails.application.routes.draw do
get "/yakyu", to:"sports#baseball"
end
- railsサーバーを起動
localhost/3000/yakyu
でブラウザには野球と表示されます。
ルーティングの中身を見てみると/yakyuをURLで指定すると
Sportsコントローラーの中のbaseballメソッドが呼び出されている
わけえです。
下ではそれぞれよく使うアクションを見ながら
見ていきましょう。
indexアクション
Indexアクションは主に一覧表示やトップページがよばれた時に使います。
def index
@sports = Sports.all
end
@sports = Sports.allはコントローラーからスポーツの一覧を全部取ってきてくれという
指示を出しているコ意味です。
HTTPはGETです。
⚫︎補足
@はインスタンス変数と言います。 これはviewに渡せる変数のことです。
例えば
def index
@sports = "サッカー"
end
<h1> <%= @sports %></h1>
とするとサッカーと出力されます。
show
Showアクションは指定したデータを表示する。投稿の詳細ページを作るときに使います。
def show
@player= Player.find(params[:id]) #idに合致した値を取得してほしい
@sports = Sports.where(sports_id: params[:id])
end
Viewからの*送信値(params)を元にデータを探しViewに返却します。
[:]は取得したい値によって変わる。 HTTPはGETされた時に使います。
new
newアクションは新規作成された時に使います。
def new
@players = Player.new #新しいデータを作成する
end
@players = Player.newはコントローラーに新しくplayerのデータを作成する意味です。
データ作成するためのフォームが呼ばれます。
つまりこれからデータを作成するという宣言でもあります。
HTTPはGETです。
create
createアクションはデータを新規作成して追加(保存)する時使います。
def create
Sports.create#省略
redirect_to "/"
end
他にも
def create
@sports.new(params[:id]) #データを作る
@sports.save #データを保存
#または
Sports.create(params[:id] #データを作りたいだけならこのコードのみ
end
上のviewから送られてきたparamsの中に登録したいデータを入れます。
その中のデータがコントローラーに処理が送られていくイメージです。
⚫︎補足
paramsとはパラメーターのことで、変数のことです。例えば入力フォームから送られてくる値のことです。
HTTPはPOSTされた時使います。。
edit
editアクションはデータを更新するためのフォームを表示する時に使います。
def edit
@sports = Sports.find(params["id"])
end
HTTPはGETされた時使います。
update
updateアクションは更新する時に使います。
def update
sports = Sports.find(params[:id]) #どのデータを更新する?
@sports.update(params[:XX]) #更新データ
#省略
end
HTTPはPATCHかPUTされた時使います。
destroy
destroyアクションは削除する時に使います。
def destroy
sports = Sports.find(params[:id])
sports.destroy
redirect_to "/"
end
HTTPはDELETEされた時使います。
HTTPの説明はこちらから
参考資料