【入門】Ruby on RailsでWebページを操作する方法

Ruby on Rails
0

前回の「Ruby on Railsの始め方」ではRuby on Railsでプロジェクト、及びページを作成する方法についてお話しました。

今回は作成したページの扱い方についてお話していきます。

スポンサーリンク

コントローラとは

Ruby on Railsでは、前回作成したHTMLのページを表示するためにコントローラ(Controller)を使用します。
このコントローラがどのページ(HTML)を表示させるか管理しているのです。

HTMLページを作成した際、以下のコマンドを実行しました。

rails generate controller [フォルダ名] [ファイル名]

このとき、[フォルダ名]の名前がついた「[フォルダ名]_controller.rb」というコントローラが作成されます。そしてそのコントローラの中身には[ファイル名]を表示する旨の命令が書かれています。具体的には以下となります。

def [ファイル名]

end

これでこのコントローラは[ファイル名]のページを見るという命令を出すことができるようになります
このとき、この[ファイル名]のことをメソッドと呼び、コントローラがそのメソッドを呼び出すことをアクションと呼びます。

ルーティングとは

コントローラを使ってどのページを表示させるかは上記で解説しましたが、どうやってそのコントローラ内のアクションを実行するのかはこれだけではわかりません。
実際インターネットでWebページを見る際は「http://○○.com/xx」というように目的ページのURLを入力し、そこからページへとアクセスします。

このURLとコントローラを結びつけてくれるものがルーティングです。ルーティングは、URLを見てどのコントローラがどのアクションを処理するのかを決める言わば対応表です。

具体的には以下のように書かれています。

get "[フォルダ名]/[ファイル名]" => "[フォルダ名]#[ファイル名]"

役割で書き直すと、

get "URL" => "コントローラ名#アクション名"

こうなります。つまりURLを取得して、そのURLに対応するコントローラへとアクションを実行させるよう命令を出すよう仕向けるのです。

流れとしては、

1. 「http://AAA.com/BBB/CCC」というURLにアクセス
2. ルーティングを見てBBB/CCCに対応する命令(BBB#CCC)を検索
3. BBBコントローラにCCCを実行させるように命令
4. BBBコントローラがCCCメソッドを実行
5. CCCのページが表示される

となります。

このルーティングですが、URLの部分は変更することができます。
例えば先程の「http://AAA.com/BBB/CCC」というページを表示させたい場合、ルーティングは

get "BBB/CCC" => "BBB#CCC"

となってます。これを

get "/" => "BBB#CCC"

と書き換えると、「http://AAA.com/」にアクセスしたときにCCCページが表示されるようになります。
URLを見てもBBB、CCCどちらの文字も出てきませんが、ルーティング上では/(トップページ)にアクセスした場合はBBBコントローラのCCCメソッド実行と記述されているので、このような結果になります。

このようにルーティングをカスタマイズすることで、好きなようなページ操作を行うことができるようになります

新たにページを追加する場合

最初ページを作成した時は、

rails generate controller [フォルダ名] [ファイル名]

コマンドを実行して作成しました。しかし、このコマンドは上で説明しました通りコントローラを作成し、その上でページを作るというものです。新たにコントローラを作る際はこのコマンドを使いますが、ページ(HTML)だけを作りたい場合コマンドは使えません。
手動でHTMLファイルを対象のコントローラフォルダ下のViewsフォルダに作成する必要があります。
また、その際コントローラにアクションの記述、ルーティングにもURLとアクションの紐づけを記述する必要もあります。
初回作成時はこれらは自動的に行われましたが、追加していく場合は全て手動で行う必要があるので注意です

最後に

これで前回の「Ruby on Railsの始め方」とあわせて、Ruby on Railsでプロジェクトを作成し、URLを入力したら目的のページを表示させるというところまでできるようになりました。
ただページを表示させるだけならこれだけで十分ですが、変数やデータベースを扱うことはまだできません。そのため次回はRuby on Railsで変数を扱う方法についてお話していきます。

0

コメント