before_action est un type de refactoring qui peut être utilisé avec les contrôleurs Rails.
** Si vous utilisez before_action Des actions communes peuvent être entreprises avant l'exécution des actions définies dans le contrôleur. ** **
Jetons un coup d'œil aux contrôleurs suivants.
app/controllers/tweets_controller.rb
class TweetsController < ApplicationController
def index
@tweets = Tweet.all
end
def new
@tweet = Tweet.new
end
def create
Tweet.create(tweet_params)
end
def destroy
tweet = Tweet.find(params[:id])
tweet.destroy
end
def edit
@tweet = Tweet.find(params[:id])
end
def update
tweet = Tweet.find(params[:id])
tweet.update(tweet_params)
end
def show
@tweet = Tweet.find(params[:id])
end
private
def tweet_params
params.require(:tweet).permit(:distance, :image)
end
end
Si vous regardez de près, des sept actions de Rails, Le contenu des actions d'édition et d'affichage est @tweet = Tweet.find(params[:id]) Est utilisé à plusieurs reprises.
Pour ** refactoriser et améliorer la lisibilité de ce code **, Utilisez before_action comme suit:
app/controllers/tweets_controller.rb
class TweetsController < ApplicationController
before_action :set_tweet, only: [:edit, :show]
def index
@tweets = Tweet.all
end
def new
@tweet = Tweet.new
end
def create
Tweet.create(tweet_params)
end
def destroy
tweet = Tweet.find(params[:id])
tweet.destroy
end
def edit
end
def update
tweet = Tweet.find(params[:id])
tweet.update(tweet_params)
end
def show
end
private
def tweet_params
params.require(:tweet).permit(:name, :image, :text)
end
def set_tweet
@tweet = Tweet.find(params[:id])
end
end
de cette façon, En utilisant before_action, il est exécuté avant deux actions, modifier et afficher Définissez une nouvelle méthode appelée set_tweet (le nom de la méthode est décidé par vous-même)
Je l'ai utilisé à plusieurs reprises plus tôt @tweet = Tweet.find(params[:id]) Il devient possible de mettre en place.
En utilisant before_action Vous pouvez éviter que le code ne devienne redondant et améliorer la lisibilité du code!
Le code donné à titre d'exemple cette fois est Le contenu des deux actions edit et show était le même, Plus vous utilisez de code à plusieurs reprises, plus l'effet est important!
En tant que refactoring de rails Veuillez essayer de référencer!
Recommended Posts