作って学ぶRuby on Rails Vol.1 まずはControllerとActionを作ってみよう!


作って学ぶRuby on Rails Vol.1 まずはControllerとActionを作ってみよう!
目次
  1. webサイトの制作について
  2. ControllerとActionの作成

webサイトの制作について

これから行うWebサイトの制作では、基本的にMVCのCであるControllerの作成と、VであるViewの作成を行います。Webアプリケーション(動的)ではなく、Webサイト(静的)を制作するという意図としては、まずRuby on Railsのお作法や作業手順を学んで頂くことに重点を置きたいからです。

本項からそのお作法や作業手順を学習していきます。

章2-1前半

ControllerとActionの作成

Railsでは静的なWebサイトを作成する上で、最低限ControllerとViewが必要になります。

※Actionとは、Viewを表示するためのメソッドのことです。詳細は後述します。

Controllerを作成する前に、config/initializersディレクトリの配下にファイルを新規作成し、下記コードを記述してください。※現時点ではそのまま写していただいて問題ありません。


Rails.application.config.generators do |g|
  g.helper false  # helperクラスを生成しない
  g.assets false  # CSSとJSを生成しない
  g.skip_routes true   # ルーティングを変更しない
  g.test_framework false  # テストスクリプトを生成しない
end

章2-1前半1

コメント部分にも記述されていますが、generate.rbを作成することでControllerクラスを作成する際に、不要なファイルが自動生成されるのを防ぎます。

Ruby on Railsにおける自動生成機能は大変便利なのですが、初めて触れる方にとっては逆に理解の妨げになってしまうためです。

上記のファイルを追加した後に、


$ rails server -b 0.0.0.0 -p 8080

を実行してください。ファイルを追加する際に文法エラーやファイル名の不正等があった場合に正常にコマンドが実行できないので、上記コマンドはエラーの確認にもなります。

正常に動作していたらCtrl+Cで動作を終了させて下さい。エラーが出ていた場合、記述内容やファイル名、ファイルの配置場所を再度確認して下さい。

エラーになった際の画面

章2-1前半2

エラーになった際は、上の図のようにエラーの箇所と内容、その他にずらずらとエラーメッセージが表示されます。上の図だと、generate.rbの2行目にsyntaxerrorというエラーが出ていることがわかります。

※syntaxerrorは文法エラーを意味します。

続いて、ControllerクラスとActionを作成していきます。

Controllerクラスを作成するには、下記のコマンドを実行します。


$ rails generate controller top index

上記のコマンドは、indexというActionを持つ、topという名前のControllerクラスを生成するという意味になります。

実行結果

章2-1前半2-2

実行した結果、上の図のように表示され、2つのファイルがappの配下に作成されたことがわかります。

・app/controller/top_controller.rb

・app/views/top/index.html.erb

top_controller.rbの内容

章2-1前半3

index.html.erbの内容

章2-1前半4

■erbとは

テキストに対してrubyのコードを埋め込む際に使用する記法です。

後述しますが、html.erbファイルに対して<% 〜 %> と記述することで〜の部分のrubyで記述されたコードをViewで実行することができます。

上の図のように、作成されたtop_controller.rbの内容を確認すると、

class TopController < ApplicationControllerと記載されています。

これは、ApplicationControllerを継承したTopControllerクラスであることを意味します。

継承については、ここでは解説しませんが、ApplicationControllerの内容を引き継いでいるという理解で大丈夫です。

top_controller.rbと同じディレクトリにapplication_controller.rbというファイルが存在するので、そのファイルの内容を引き継いでいるという意味になります。

また、defindexと2行目に記述されていますが、これはメソッドになります。

Controllerに記述する、画面表示用のメソッドのことをRuby on RailsではActionと呼びます。(呼称が異なるだけで、Rubyにおけるメソッドと同じです。)

■ControllerとActionの作成
[code gutter="false"]$ rails generate controller xxx yyy[/code]

・上記コマンドは、yyyというActionを持つ、xxxという名前のControllerを作成するという意味になります。
・Controller内の、画面表示用のメソッドはActionと呼ぶ

NEXT LESSON ☛ ルーティングを勉強しよう!

PREV LESSON ☛ これでバッチリcloud9!Railsが使える環境設定をしよう!

目次 - Ruby & Ruby on Rails テキスト目次 -


CodeCampus編集部
この記事を書いた人
CodeCampus編集部
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp