Ruby on Railsは、特定のコマンドを入力することで必要なプログラムを自動で生成してくれます。
$ rails new アプリケーション名
またはpostgresqlのデータベースを使う場合は
$ rails new アプリケーション名 -d postgresql
と入力して実行すれば
- アプリケーション名のフォルダ
- 開発に必要なフォルダやファイル
が自動作成されますし、トップページを作る時は
$ rails g controller 好きなコントローラー名(複数形) アクション名
と入力して実行すれば、コントローラと、それに対応したファイルが自動で用意されるので簡単にページが作れましたね。
新しくwebページを追加する場合も、同じコマンドで簡単に・・・と思ってしまいますが、やてめて下さい。
なぜかというと、すでに同じ名前のコントローラーがある場合は、同じコマンドを使うと上書きされてしまうので注意。
では、どうやってページを増やせばいいのでしょうか。
今回は、コマンドを使わずウェブページを追加する方法を説明します。
目次
サービス紹介ページを作ってみよう
新しいページを追加するには
$ rails g controller 好きなコントローラー名(複数形)アクション名
で、すでに生成されている、ルーティングとコントローラーのファイルに
手動でコードを書き足します。
ユーザーからのリクエストを受けてから、ページが表示されるまでの流れは
- ルーティング
- コントローラー
- ビュー
という順番で処理が行われているので、手動でコードを書き足す場合も
- ルーティングを指定する
- controllerに該当するアクションを追記する
- アクションに対応するviewフォルダの作成
という順番で記述していきましょう。
次から、ひとつずつ解説していきます。
Ruby on Railsのルーティングとアクションとビュー
ルーティングは
ブラウザとコントローラを繋ぐ
という役割を担当していましたね。
わかりやすく言うと、ユーザーのリクエストに対して
どのコントローラのどのアクションを使って処理するのかを判断
し、適切なコントローラのアクションを呼び出します。
1:ルーティングを指定する
ルーティングを指定するとは、どういうことかというと
configのroutes.rbファイルに、URLと対応するアクションを記述すること
routes.rbファイルを開くと、すでに自動生成されたコードが記述されていますね。
そのコードの下に、新しく次のように追記します。
get "URL" => "コントローラ名#アクション名"
または省略形式で
get 'コントローラ名/アクション名'
例えば、「homes」というコントローラーに新しく「about」というページを増やしたい場合
get "about" => "homes#about"
または省略形式で
get 'homes/about'
のように記述すれば
「homes」というコントローラーの中の「about」というURLへリクエストを受けた時には「about」に指定されているアクションを実行する
という指定ができます。
2:controllerに該当するアクションを追記する
ルーティングの指定ができましたね。
次に、コントローラーに該当するアクションを記述します。
例えば、homesに追加するならコントローラーにある
app/controlllers/homes_controller.rb ファイルを開き
def about
end
で、「about」のアクションを追加できます。
3:Views(ビュー)を追加する
ブラウザで表示するために、アクションに対応するviewフォルダが必要です。
viewフォルダに「html.erb」ファイルを新規作成しましょう。
Views(ビュー)新規ファイルの作成方法
- ファイルを作成したいフォルダの上で右クリックする
- メニューから「新規ファイル」をクリック
- ファイル名を入力する(例)about.html.erb
作成したビューに「HTML」を記述すれば、新しいウェブページが完成です。
Ruby on RailsでWebページを新しく追加しようまとめ
新しくwebページを追加したい場合は、すでに生成されている、ルーティングとコントローラーのファイルに手動でコードを書き足し、新規のビューファイルを作成します
- ルーティングを指定する
- controllerに該当するアクションを追記する
- アクションに対応するviewフォルダの作成
と覚えておきましょう。