Rails – コントローラー/ビュー~ページの作成

概要

プロジェクト生成直後などに、コントローラーとアクションを生成してページをつくり、確認する。

生成時

  • コントローラーファイルが生成される
  • アクションに対してビューファイルが生成される
  • リクエストに対するコントローラーとアクションのルーティングが定義される

実行時

  • ユーザー側のブラウザー/クライアントからGETなどのリクエストでページが要求される
  • リクエストはプロジェクトのroutes.rbファイルの内容に従ってコントローラークラスのアクションメソッドに送られる
  • アクションメソッドは必要な内容を実行し、ビューファイルをレンダリング
  • レンダリングされたページがコントローラーを介してクライアントに送られる

手順

ディレクトリーの移動

プロジェクトディレクトリーに移動する。

cd project_name

コントローラーとアクションの生成

以下のコマンドでコンローラーを作成する。アクションを指定しない時はaction_nameを省略してもよい。

rails generate controller controller_name action_name 

プロジェクトディレクトリー下に以下のファイルが作成される。

  • app/controllers/controller_name_controller.rb
  • app/views/controller_name/action_name.html.erb
  • app/assets/stylesheets/controller_name.scss

コントローラーファイル

ファイルの位置とファイル名

app/controllers下のファイルにコントローラーのクラスが定義される。

クラスファイル名はスネークケース末尾に'_controller'がつけられる。拡張子は.rb

  • controller_name_controller.rb

ファイルの内容

ファイル内容はクラス定義で、コントローラーとアクションを指定して生成した場合、以下が定義されている。

  • コントローラークラス
    • コントローラークラスはApplicationControllerクラスを継承
    • クラス名はパスカルケースで、末尾に'_Controller'がつけられる
      • ControllerNameController
  • アクションメソッド
    • コントローラークラスのメソッドとして定義される
    • アクション名はスネークケース
      • action_name

後からアクションを追加する場合、コントロールクラスのメソッドとして追加し、ルーティングを設定する。

ビューファイル

ファイルの位置とファイル名

app/viewsディレクトリーの下にコントローラー名と同じフォルダーが作成され、その下にアクション名と同じ名前のスネークケースでアクションメソッドが定義される。拡張子は.html.erb

app/views/demo_contents/top_page.html.erb

ファイルの内容

コントローラー追加直後のビューファイルの内容はシンプルで、コントローラー#ビューの表示がH1要素で、その場所がp要素で書かれている。

後からアクションを追加する場合、アクション名と同じファイル名でhtml.erbファイルを作成し、その内容にHTMLを書いていく。

スタイルシート

ファイルの位置とファイル名

コントローラーを生成すると、アプリケーション固有のスタイルシートがapp/assets/stylesheetsにつくられる。ファイル名はコントローラーと同じスネークケースで拡張子は.scss

app/assets/stylesheets/controller_name.scss

拡張子からわかるように、スタイルシートはSCSSで書くことを想定している。

ファイルの内容

ファイルの内容はコメントのみで、ゼロからスタイルを指定するようになっている。

参照:Railsにおけるスタイルシートの設定

ルーティングファイル

ファイルの位置とファイル名

ルーティングファイルはconfigディレクトリー下のroutes.rbファイル。

config/routes.rb

ファイルの内容

コントローラーが生成されるのに合わせて、routes.rbに1行追加される。

この場合、ブラウザー側からは以下のURLでアクセスするとアクションメソッドで指定したページが表示される。

localhost:3000/controller_name/action_name

参照:Railsにおけるルーティング基礎的なルーティング

確認

ここでプロジェクトディレクトリー下でRailsサーバーを立ち上げる

rails s -b 0.0.0.0

その後ホストのブラウザーで以下のURLを直に入力すると、シンプルなページが表示される。

localhost:3000/controller_name/action_name

ページの削除

コントローラーの削除は以下のコマンドで実行。

rails destroy controller controller_name

このコマンドでコントローラーファイルやビューファイルなどはきれいに削除されるが、routes.rbの記述だけは残るため別途削除する必要がある。

実行例

コントローラーとアクションの生成

demo_appというプロジェクトを作成した後、demo_contentsというコントローラーとその下のtop_pageというアクションを定義する。

コントローラーファイル

ファイルの位置と名前

app/controllersディレクトリーの下に以下のファイルが生成される。

demo_contents_controller.rb

ファイル名はスネークケースで、コントローラー名の後ろに_controllersが付加される。拡張子は.rb

ファイルの内容

パスカルケースでコントローラークラスの空の定義が生成される。この場合はdemo_contentsからDemoContentsControllerクラスが定義され、メソッド名はスネークケースでtop_pageとなっている。

ビューファイル

新たに作成されたapp/views/demo_contentsディレクトリーに、アクションに対応したビューファイルが生成されている。

この場合、ディレクトリー名がコントローラー名demo_contents、ビューファイル名がアクション名に基づいてtest_page.html.erbとなっている。

ファイルの内容はシンプルなHTML。

  • H1要素でコントローラークラス名とアクション名(DemoContents#top_page)を表示
  • p要素でビューファイルのパスを表示(app/views/demo_contents/top_page.html.erb)

スタイルシート

app/assets/stylesheets/に作成されたスタイルシート(demo_contents.scss)の内容を確認してみる。コメントのみの空の内容なのが確認できる。

ルーティングファイル

config/routes.rbを確認すると1行追加されている。

 

以下のURLでアクションで設定されたページが表示される。

localhost:3000/demo_contents/top_page

表示結果は以下のとおりシンプル。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です