ギークなエンジニアを目指す男

機械学習系の知識を蓄えようとするブログ

Railsのビュー / コントローラ / ルーティング について

f:id:taxa_program:20170727000850p:plain

ページの作成についてちょっと勉強したのでこの記事にまとめておきます。
今回学んだサイトはProgateです。(画像も一部使用させて頂きました)

ビュー(View)について

ビューとは、ページの「見た目」を作るためのHTMLファイル(っぽいもの?)らしい。

ブラウザとRailsのやりとりの中で、Railsからビューが返され、ページが表示されるようだ。

f:id:taxa_program:20170727001324p:plain

下記コマンドを実行すると、viewsフォルダの中に
「homeフォルダ」と「top.html.erb」というファイルがRailsによって自動的に作成される。

$ rails generate controller home top

※上記コマンドはトップページを作成するときに行うコマンドで
このコマンドを実行すると、新しいWebページが自動で作られ、 「localhost:3000/home/top」というURLにアクセスできるようになる。

f:id:taxa_program:20170727002412p:plain

冒頭でも述べたが、この「top.html.erb」ファイルがHTMLファイルのようなもので、
この中身を書き換えることにより、見た目のレイアウトを変更できるようだ。

コントローラ(Controller)について

ページを表示するとき、Railsの中ではコントローラを経由して
ビューをブラウザに返しているみたい。

なんか入れ子構造みたいで難しく聞こえる。

要は、上記で作成したビューをブラウザに表示させるには
コントローラさんが必須ということだ。

f:id:taxa_program:20170727002536p:plain

「rails generate controller home top」を実行したとき、
home_controller.rb」というコントローラのファイルが作成れる。

f:id:taxa_program:20170727003107p:plain

そしてこのファイルの中に「topメソッド」が追加される。
このコントローラ内のメソッドを「アクション」と呼ぶらしい。 f:id:taxa_program:20170727003356p:plain

コントローラ内のアクションは、ブラウザに返すビューを viewsフォルダの中から見つけ出す役割を担っている。
つまり、アクションはviewsフォルダの中のコントローラと同じ名前(home)のフォルダから、
アクションと同じ名前(top)のHTMLファイルを探してブラウザに返している。 f:id:taxa_program:20170727003934p:plain

ルーティング(routing)について

Rails内ではコントローラを経由してビューを返している、とここまで説明しましたが、
ブラウザとコントローラを繋ぐ役割を担うのがルーティングらしい。
ページが表示されるまでに、
ルーティング → コントローラ → ビュー
という順で処理が行われているようだ。 f:id:taxa_program:20170727004757p:plain

ルーティングは、送信されたURLに対して
「どのコントローラの、どのアクション」で処理するかを決める「対応表」のこと。
ブラウザでURLを入力すると、ルーティングがURLを見て、
適切なコントローラのアクションを呼び出します。 f:id:taxa_program:20170727004947p:plain

f:id:taxa_program:20170727005054p:plain

ルーティングファイルは「get "URL" => "コントローラー名#アクション名"」
という文法で記載されている。
これによって、ブラウザから「localhost:3000/home/top」というURLが送信されたときに、
homeコントローラーのtopアクションが処理されるようになる。

f:id:taxa_program:20170727005303p:plain

上記のURL部分を変更しても、"home#top" の部分が変わらない限り
homeコントローラのtopアクションに対応するビューファイル(= top.html.erb)
の内容がブラウザに表示される。

なんとなくRailsの全体像がつかめてきた気がする。
(よくある「気がする」だけなので、実際はなにも分かっていないと思が...笑)