before_action ist eine Art von Refactoring, das mit Rails-Controllern verwendet werden kann.
** Wenn Sie before_action verwenden Allgemeine Aktionen können ausgeführt werden, bevor die in der Steuerung definierten Aktionen ausgeführt werden. ** ** **
Werfen wir einen Blick auf die folgenden Controller.
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
Wenn Sie genau hinschauen, von den sieben Aktionen von Rails, Der Inhalt der Bearbeitungs- und Showaktionen ist @tweet = Tweet.find(params[:id]) Wird wiederholt verwendet.
Um ** die Lesbarkeit eines solchen Codes zu überarbeiten und zu verbessern **, Verwenden Sie before_action wie folgt:
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
auf diese Weise, Mit before_action wird es vor zwei Aktionen ausgeführt: Bearbeiten und Anzeigen. Definieren Sie eine neue Methode namens set_tweet (der Methodenname wird von Ihnen selbst festgelegt).
Ich habe es früher wiederholt benutzt @tweet = Tweet.find(params[:id]) Es wird möglich, zusammen zu stellen.
Mit before_action Sie können verhindern, dass der Code redundant wird, und die Lesbarkeit des Codes verbessern!
Der diesmal als Beispiel angegebene Code lautet Der Inhalt der beiden Aktionen Bearbeiten und Anzeigen war der gleiche. Je mehr Code Sie wiederholt verwenden, desto größer ist der Effekt!
Als Rails Refactoring Bitte versuchen Sie zu referenzieren!
Recommended Posts