こんにちは、財前航介です。
Ruby on Railsを使っていると、「アクション」という言葉をよく聞きますね。
これは、ユーザーからリクエストを受けたときに、Webサーバー側で行われる「アクション(動作)」のことです。
このアクションとは、どこに、どのように定義されるものなのでしょうか。
Ruby on Railsがリクエストを受けたときの動きを整理しながら、詳細を見ていきましょう。
Ruby on Railsにおけるアクションとは

前述のとおり、Ruby on Railsにおいてアクションという言葉は、ユーザー側からリクエストを受けたときに実行される処理のことです。
ユーザーからのリクエストに応じた画面を生成してレスポンスとしてユーザーに送り返したり、データベースに適切なデータを登録したり、いろいろな処理を行うことができます。
Ruby on Railsのアクションはどこにある?

Ruby on Railsにおけるアクションは、コントローラーの中に記載されています。
コントローラーとは、以下のような階層に配置されているファイルです。
appフォルダの中の、controllersフォルダの配下にあるファイルですね。
ファイルの末尾が「_controller.rb」となっているので、見付けやすいのではないでしょうか。
Ruby on Railsのアクションの例

コントローラーには、たとえば以下のようなことが記載されています。
class TopController < ApplicationController
def index
@today_date = Date.today
end
end
上記はあくまで例ですが、ここで言うアクションは、「index」です。
オブジェクト指向について学習したことがある方でしたらピンとくるかと思いますが、indexとは、TopControllerクラスの、メソッドです。
つまり、アクションとは、コントローラークラスのメソッドのことなのです。
この例では、以下の部分がアクションに当たります。
@today_date = Date.today
end
ここでは本日の日付を取得して、「@today_date」という変数にその日付を格納していますね。
@(アットマーク)を付けると、この変数はインスタンス変数になります。
このインスタンス変数という名前の意味は深く考えなくても良いのですが、Ruby on Railsのコントローラークラスにおけるインスタンス変数は、Viewから参照できるという特徴があります。
Viewとは、ユーザーに見せるためのHTMLが記載されている部分ですね。
ここでは、@(アットマーク)が付いている変数は、View側から参照できるということだけ、覚えておきましょう。
つまりこの例は、コントローラーが、ユーザーからtopコントローラーのindexアクションを受け付けると、@today_dateに本日日付を格納しています。
そして、この@today_dateの値は、ユーザーに送信するためのHTMLファイルに埋め込めるため、本日日付が埋め込まれたWebページを、ユーザーに見せることができます。
(実はユーザーからリクエストを受け付ける際には、コントローラーが直接受けているわけではなく、routes.rbというファイルを介しているのですが、その説明は以降の記事で行いましょう。)
この例のように、「本日日付を取得する」などのサーバー側の処理を記載する際には、アクションとしてコントローラーに処理を記載します。
また、この例では一つのアクションのみしかありませんが、一般的には、コントローラークラスは複数存在し、その複数のコントローラークラスそれぞれが、複数のアクションを持っています。
まとめ: Ruby on Railsにおけるアクションとは、コントローラークラスのメソッドのこと!

如何でしたでしょうか?
Ruby on Railsの処理の全体的な流れにまだ慣れていない方は、中々イメージしづらい内容だったかもしれません。
Ruby on Railsの処理の流れに関しては、こちらのブログでも引き続きご説明をしていきますが、この記事で覚えて頂きたいのは、以下の内容です。
- アクションとは、ユーザーからのリクエストに応じてサーバー側で実行される処理
- Ruby on Railsのアクションは、コントローラークラスのメソッドとして記載されている
Ruby on Rails全般のメリットやデメリットは、以下の記事で書いているので、よろしければこちらもご参照下さい。
Ruby on Railsのメリット・デメリット【初心者にもわかりやすく解説】>>
最後まで読んで下さり、ありがとうございました。
コメント