読者です 読者をやめる 読者になる 読者になる

Rails TutorialでMVCを徹底的に理解する!!! 

 rake routes コマンドをし、prefixの列がpathに関連する。

 --------------------------------------------------------------------------------------------------- 

まずこの図は絶対に理解必須!!!!! by Rails界のすごい人

具体的には、/usersのindexページをブラウザで開くという典型的な操作を行うときに何が起こっているかをMVC を使って説明してある。

f:id:snsn19910803:20150817165438p:plain

  1. ブラウザは/usersというURLへのリクエストを発行する。
  2. Railsは/usersをUsersコントローラ内のindexアクションに割り当てる (ルーティング)。
  3. indexアクションはUserモデルに「すべてのユーザーを取り出せ」と指示する (User.all)。
  4. Userモデルはすべてのユーザーをデータベースから取り出す。
  5. Userモデルはユーザーの一覧をコントローラに返す。
  6. コントローラはユーザーの一覧を@users変数に保存し、indexビューに渡す。
  7. ビューは、その中に埋め込まれているRubyを使用してHTMLを生成する。
  8. コントローラは、生成されたHTMLをブラウザに返す。

 

さらに補足  ↓

 

indexアクションに@users = User.allという行がある(図の3)。これによって、Userモデルから全てのユーザーの一覧を取り出し(4)@usersという変数に保存している(5)。

 

@users変数にユーザ一ー覧が保存されると、コントローラーはビューを呼び出す(6)。@記号で始まる変数はRubyではインスタンス変数と呼ばれる。ビューでは自動的にこれらのインスタンス変数を使用できる。この場合index.html.erbビューは@usersの一覧を並べ、1行ごとにHTMLの行として出力する。

 

ビューはその内容をHTMLに変換し(7)、コントローラーがブラウザにHTMLを送信して、ブラウザでHTMLが表示されます(8)。

 

M モデル →

リクエストが例えば登録済みのデータがみたいといったものや、新しいデータを格納して欲しいといったものの場合、データベースとのやり取りが発生します。Railsアプリケーションの場合、使用しているデータベースのテーブル毎にモデルが用意されています。利用者からのリクエストで呼び出されたアクションは、モデルを介してデータベースとのやり取りを行い、データを取得したり新しいデータを格納したりします。 

V ビュー →モデルを介して取得したデータを受け渡し用の変数にセットしビューを呼び出します。ビューは変数を介して渡されたデータを使ってHTML文書を作成しコントローラへ返す。

 

C コントローラー → Railsプログラミングを行う上で、まず基点となるのはコントローラクラスです。コントローラクラスはModel - View - ControllerのうちControllerを担うコンポーネントで、個々のリクエストに応じた処理を行います。ビジネスロジック(Model)を呼び出すのも、その結果を出力(View)に引き渡すのも、コントローラクラスの役割です。コントローラクラスとは、リクエストの受信からレスポンスの送信までを一手に担う、Railsアプリケーションの中核とも言える存在。

 

ざっくり落とし込みたくて、日常でのMVCの例を探してました。

MVCモデルの概念を漫画で解説してみる | hijiriworld Web

この方のは分かりやすかったです!ありがとうございました!!

モデルはデータベースの中からピックアップするから複数形になるっていうことかな?

 

  

HTTPメソッドについても!!!!!

f:id:snsn19910803:20150817181930p:plain

GETとPOSTが良く理解できてないので、メモ。 

新規作成するページと作成するアクションといった具合で区別してもいいのかなー?w

 

 

ここに別例が記載されてました!

railsguides.jp

f:id:snsn19910803:20150817183048p:plain

POSTは新規作成(create)と覚えればおkということで!

GETは主に表示系という理解に至った!w

  

復習としてブログ書くのめっちゃいい!!!!!!!

東海大相模がんばれええええ!!!