読んでなるほど!と思うのに、しばらくするとなんだっけ?ってなるシリーズその1
・edit
・show
この2つのアクションの記述をぎゅっとコンパクトに。
使用するのは、
before_action
onlyオプション
tweets_controller.rb
class TweetsController < ApplicationController
def edit
@tweet = Tweet.find(params[:id])
end
#↑editの中身「@tweet = Tweet.find(params[:id])」と、
#↓showの中身が同一の記述になっている
def show
@tweet = Tweet.find(params[:id])
end
private
end
重複している部分を「set_tweet」として、privateメソッドに移し替える
tweets_controller.rb
private
def set_tweet
@tweet = Tweet.find(params[:id])
end
before_actionの記述方法
tweets_controller.rb
before_action :処理させたいメソッド名
before_action :set_tweet, only: [:edit, :show]
最後にまとめると
tweets_controller.rb
class TweetsController < ApplicationController
before_action :set_tweet, only: [:edit, :show]
def edit
end
def show
end
private
def set_tweet
@tweet = Tweet.find(params[:id])
end
end
editとshowに入っていた
@tweet = Tweet.find(params[:id])
これをset_tweetとインスタンスで定義。
そして一番上で
:set_tweet, only: [:edit, :show]
としてeditとshowのみに使うようonlyオプションで指定