教材の内容に関係のない質問や教材とは異なる環境・バージョンで進めている場合のエラーなど、教材に関係しない質問は推奨していないため回答できない場合がございます。
その場合、teratailなどの外部サイトを利用して質問することをおすすめします。教材の誤字脱字や追記・改善の要望は「文章の間違いや改善点の指摘」からお願いします。
2章ではスタート画面を作成します。
本パートでは下記の画像のようにデザインは特にしていない仮のスタート画面を表示させるところまで実装します。
では実際に進めていきましょう。
まずスタート画面のルーティングの設定を行います。
ルーティングは受け取ったURLを認識し、適切なコントローラー内のアクションを動かすように設定します。
今回はgamesコントローラーのnewアクションのルーティングをスタート画面のルーティングとして設定します。
config/routes.rb
に以下のコードを追加してください。
Copied!config
└── routes.rb
config/routes.rb1234 Copied!Rails.application.routes.draw do
# ここにgamesコントローラーのnewアクションのルーティングを追加する
get 'games/new'
end
rails routes
というコマンドを実行することで設定しているルーティングを全て表示できます。 実際に下記のコマンドを入力してください。
Copied!rails routes
ルーティング情報が複数出てきますが、下記ルーティングが今回設定したルーティングの情報になります。
Copied!games_new GET /games/new(.:format) games#new
次にスタート画面で使うコントローラーを作成します。
コントローラーの名称は先程設定したルーティングでgames
と指定したので、gamesコントローラーを作成します。
コントローラーはrails g controller コントローラー名
というコマンドで作成出来ます。以下のコマンドを実行してください。
Copied!rails g controller games
上記のコマンドを実行するとターミナルに下記のような実行結果が表示されます。
Copied!rails g controller games
Running via Spring preloader in process 4454
create app/controllers/games_controller.rb
invoke erb
create app/views/games
invoke test_unit
create test/controllers/games_controller_test.rb
invoke helper
create app/helpers/games_helper.rb
invoke test_unit
invoke assets
invoke scss
create app/assets/stylesheets/games.scss
次に作成したコントローラーにアクションを追加します。
まず先ほど追加したルーティングを確認してみましょう。
先ほどのrails route
の結果を参照してください。
Copied!games_new GET /games/new(.:format) games#new
今回の場合はgames#new
、つまりgamesコントローラーのnewアクションを処理するように指定しています。
なのでgamesコントローラーにnewアクションを作成していきましょう。
app/controllers/games_controller.rb
に以下のコードを追加してください。
Copied!app
└── controllers
└── games_controller.rb
app/controllers/games_controller.rb12345678 Copied!class GamesController < ApplicationController
# ==========ここから追加する==========
def new
end
# ==========ここまで追加する==========
end
今回は仮のスタート画面を表示させるだけで、データベースからデータを取ってくる処理はありませんのでnewアクションの中には何も書きません。
最後にビューを追加します。
アプリケーションのapp/viewsディレクトリに、コントローラーごとにディレクトリをつくり、ビューのテンプレートファイルを置きます。
今回はgamesコントローラーなのでgamesディレクトリにアクション名.html.erb
という名前でファイルを作成します。
※ rails g controller games
コマンドでコントローラーを作成した際、app/views/gamesディレクトリは一緒に作られてます。
app/views/games/ディレクトリ内にnew.html.erb
を追加してください。追加したらnew.html.erb
に以下のコードを追加してください。
Copied!app
└── views
└── games
└── new.html.erb
app/views/games/new.html.erb1234567 Copied!<div id="main">
<div>
<div>
あなたが思った漫画を当ててみせましょう!<br/>
</div>
</div>
</div>
では、実際に仮のスタート画面を表示されるか確認します。
http://localhost:3000/games/new にアクセスしてみましょう。
下記の画像のように表示されていればうまく動作しています。
(サーバーを立ち上げていない場合はターミナル上でbundle exec rails s
を実行してサーバーを立ち上げてください。)
画面の左上にxxmsというツールチップが表示される場合(下記画面だと13.6msと表示されている部分)
このチップはrack-mini-profilerと呼ばれる、パフォーマンス計測するためのものです。
URLの末尾に?pp=disabled
を付与することで非表示にできます。
仮のスタート画面を「http://localhost:3000 」にアクセスしたら表示できるようにルーティングの設定を行います。
rootメソッドを使用することで、Railsがルート/
とすべき場所を指定できます。
参考)rootを使用する
config/routes.rb
を以下のように編集してください。
Copied!config
└── routes.rb
config/routes.rb1234 -+ Copied!Rails.application.routes.draw do
get 'games/new'
root 'games#new'
end
編集できたら http://localhost:3000 にアクセスして下記の画像のように表示されていればうまく動作しています。
以上で今回のパートは終了です。
お疲れ様でした。