LoginSignup
0
0

More than 3 years have passed since last update.

Railsのコントローラー(controller)

Posted at

1.コントローラの役割

Action Controllerは、MVCモデルのCに相当します。MVCとは、M(Model)、V(View)、C(Controller)の3つの要素のことであり、リクエストを処理するコントローラがルーティング設定によって指名されると、コントローラはリクエストの意味を理解し、適切な出力を行なうための責任を持ちます。これらの処理はほとんどAction Controllerが行い、しかも吟味された規則を使うので、リクエストの処理は可能な限り素直な方法で行われます。
つまり、コントローラー層では、ブラウザなどから発行されたHTTPリクエストの宛先となっているURLや、HTTPメソッド(GETやPOSTなど)を元に、routes.rbで定義された「そのリクエストを処理する担当箇所」を特定し、どのコントローラー(クラス)の、どのアクション(メソッド)が処理をするのか決定する層、ということです。



1.クライアントからのリクエストをWebサーバを介して受け取るます(routes)

2.ルーティング機能がそのリクエストの処理を行うべきコントローラー(クラス)とアクション(メソッド)を特定し、アクションを呼び出します。

3.アクション(メソッド)では必要に応じてモデルを利用します。例:

ruby
def new
  @user = User.new
end

4.モデルがデータベースで永続化されている場合、モデルはデータベースへの書き込みや読み出しも担当します。例:

ruby
def index
  @tasks = Task.all
end

5.アクションごとに、対応するビューテンプレートを用いてHTML等を作成します。例:show.html.erb

6.コントローラがレスポンスを作成し、Webサーバを介してクライアントへ返します。


2.コントローラの命名規則

Railsのコントローラ名(ここでは「Controller」という文字は除く)は、基本的に名前の最後の部分を「複数形」します。例えば、ClientsControllerの方がClientControllerより好ましく、SiteAdminsControllerはSiteAdminControllerやSitesAdminsControllerよりも好ましいということです。


3.メソッドとアクション

newメソッドの内容が空でも正常に動作します。これは、Railsではnewアクションで特に指定のない場合にはnew.html.erbビューをレンダリングするようになっているからです。Clientを新規作成すると、newメソッドはビューでアクセス可能な@clientインスタンス変数を1つ作成できるようになります。

ruby
def new
  @client = Client.new
end



4.パラメータ

コントローラのアクションでは、ユーザーから送信されたデータやその他のパラメータにアクセスして何か作業を行なうのが普通です。Railsに限らず、一般にWebアプリケーションでは2種類のパラメータを扱うことができます。
1番目は、URLの一部として送信されるパラメータで、「クエリ文字列パラメータ」と呼ばれます。クエリ文字列は、常にURLの"?"の後に置かれます。
2番目のパラメータは、「POSTデータ」と呼ばれるものです。POSTデータは通常、ユーザーが記入したHTMLフォームから受け取ります。これがPOSTデータと呼ばれているのは、HTTP POSTリクエストの一部として送信されるからです。Railsでは、クエリ文字列パラメータの受け取り方とPOSTデータの受け取り方に違いはありません。どちらもコントローラ内ではparamsという名前のハッシュでアクセスできます。



参照:Railsガイド:https://railsguides.jp/action_controller_overview.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0