Here I will briefly explain what before_action is.
before_action is defined in the controller when using before_action A method that allows common processing to be performed before an action is executed. In other words, it is used when you want to process before executing the rails controller action, or when you want to combine the processes with the same description. </ font>
Even if it is explained in words, "Doyukoto?", "I can't imagine ..." I think so I would like to explain with an example below.
[Example] before_action
class controller name< ApplicationController
  before_action :Method name you want to process
We also use the options here at the same time. You don't have to use before_action for every action, so Specify which action you want to process before executing. The option used there is the only option.
By using the only option as with resources, it is possible to limit which action to execute before executing it. </ font>
"resources" </ font> is a method that allows you to set the routing of 7 actions at once.
[Example] before_action
class controller name< ApplicationController
  before_action :Method name you want to process, only: [:Action name, :Action name]
Use the only option after before_action as described above. You can specify the action by writing as in the example.
The basics are described as above.
How should I write even if I refer to this example? I think it will be The following is an explanation of the overall description of the controller.
Here, I would like to explain by giving an example of the entire description of the controller.
This is a description example when before_action is not used first. I would like you to see the example below, but there is the same description.
[Example] controller
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])⬅️ Here! !!
  end
  def update
    tweet = Tweet.find(params[:id])
    tweet.update(tweet_params)
  end
  def show
    @tweet = Tweet.find(params[:id])⬅️ Here! !!
  end
  private
  def tweet_params
    params.require(:tweet).permit(:name, :image, :text)
  end
end
Looking at the edit and show actions in the tweets controller, @tweet = Tweet.find (params [: id]) </ font> is repeatedly described. I would like to summarize the description of this part.
In the above example, there is another description that is covered, This time, I will use before_action in only one place, so I will summarize it. Do not mind. w
The following is a description example when used.
Write the description by executing "only" processing of edit action and show action I would like to summarize it. This time, let's call the method before_action test_tweet!
[Example] controller
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 test_tweet
    @tweet = Tweet.find(params[:id])
  end
end
By using before_action, you can use the edit and show actions Before execution, we call a method called test_tweet.
By doing so, it is a common process of the two actions. @tweet = Tweet.find (params [: id]) works.
Repeat by using before_action as in the above example There is nothing to describe, so it's refreshing and easy to see! !!
· before_action is before the action defined in the controller is executed. A method that can perform specified common processing </ font> -The only option uses the only option like resources to limit which action to execute before executing it. </ Font>
!! !! When writing code from these things, it is good to write it in an easy-to-read manner without repeating the same description! !!
Recommended Posts