【Ruby on Rails】アプリを作ったらディレクトリやビューなど
Railsのアプリケーションにはいろいろと決まったルールがあります。ディレクトリの構造やコントローラとアクションの作り方。ビューを作ったりなどの基本操作をお覚えましょう。
Railsアプリケーションのディレクトリ構造
アプリケーションを作ると、ファイルやフォルダができます。各フォルダにはそれぞれ役割を持ったファイルが配置されています。基本なので覚えておきましょう。
ディレクトリ | 役割 |
app | モデル、ビュー、コントローラのコード |
bin | 各種スクリプトファイル。 |
config | ルーティングやデータベースなどの設定ファイル |
db | マイグレーションスクリプトやシードデータ |
doc | 開発者向けのドキュメントを置く |
lib | 自作のライブラリやrakeファイル |
log | ログが出力される |
public | アプリケーションを介さずに送信する静的なファイル |
storage | Active Storageが利用する |
test | テストスクリプト |
tmp | キャッシュなどのテンポラリディレクトリ |
vendor | プラグインを配置 |
コントローラとアクションの作成
デフォルトのトップページが表示されましたが、できれば自作のページを表示したいですよね。そのためにはコントローラとビューを作成しましょう。
コントローラ作成の事前準備
コントローラを実際に作る前に、次の内容のファイルをconfig/initializersディレクトリの中に作成してください。ファイル名はgenerators.rbです。
Rails.application.config.generators do |g|
g.helper false
g.assets false
g.skip_routes true
g.test_framework false
end
ファイルを作るコマンドを実行する際、使わないものを抑制したりします。プロジェクトによっては必要な場合もありますが、今回は使いません。
- helper : ヘルパーを作るかどうか
- assets : CSS,JavaScriptファイルを作るかどうか
- skip_routes : config/routes.rbを変更するかどうか(trueだとしない)
- test_framework : テストスクリプトを生成するかどうか
コントローラの作成
コントローラは次のコマンドを利用して作成します
bin/rails g controller コントローラ名 アクション名
実際にTopControllerとindexアクションを作ってみましょう。作成するコマンドを打ち込むと、他のメッセージも表示されますが大事な部分は以下。
ユーザー名$ bin/rails g controller top index
create app/controllers/top_controller.rb
invoke erb
create app/views/top
create app/views/top/index.html.erb
コマンドが成功するとapp/controllers/top_controller.rbが出来ています。コントローラーの内容はこんな感じ。
class TopController < ApplicationController
def index
end
end
TopControllerクラスはApplicationControllerを継承しています。Railsのコントローラは1つのRubyクラスで表されます。
TopControllerクラスの中には、indexメソッドが出来ています。このindexメソッドがトップページを表示するときに使われる「アクション」になります。
コントローラやアクションについては後ほど解説します。そんなのがあるのかーと思って貰えれば現時点ではOK
ルーティングの設定
Railsのアプリケーションは、コントローラとアクションを作っただけでは不十分です。URLのパスとコントローラを結びつけるルーティングという作業が必要になります。configディレクトリにあるroutes.rbを開き、以下のように修正してください。
Rails.application.routes.draw do
root "top#index"
end
この修正で、トップページにアクセスすると反応するコントローラとアクションを変更することが出来ます。TopControllerのindexアクションがこのアプリケーションのルートになります。
ビューの作成
indexアクションに対応するビュー(表示するもの)のテンプレートを編集してみましょう。
app/views/top/index.html.erbを開いて編集してください。もとから2行だと思うので、タグの中の文字列だけ変更されるのを確認してみましょう。
<h1>H1要素</h1>
<p>ここが変更した文章</p>
変更したファイルを保存後、ページを読み込み直すと以下のうようになっていれば成功!
変数を使ってみる
少し色気を出して、ただのHTMLとは違うってところを見せてやりましょう!編集するファイルは2つ。
- app/controllers/top_controller.rb
- app/views/top/index.html.erb
class TopController < ApplicationController
def index
@message = "HTMLとは違うのだよ!"
end
end
<h1>H1要素</h1>
<p>あなたはHTMLですか?</p>
<p><%= @message %></p>
うまく変更出来たらこんな表示になってくれるはず