Railsのコントローラとアクションを作成する

DSCF0568

Railsでアプリケーションを作成して、コントローラとアクションを追加するメモ。

  • 環境
    • OS X El Capitan
    • Ruby 2.2.3
    • Rails 4.2.3

Railsアプリケーションを作成

hogeアプリケーションを作りディレクトリに移動する。

$ rails new hoge
$ cd hoge

コントローラを作成

fooという名前のコントローラを作成する。

$ bin/rails generator controller foo

generatorはgとしても良い。

$ bin/rails g controller foo

また同時にアクションを作成する事もでき、ここではbarというアクションを作成する。コントローラにアクションが追加され対応するbar.html.erbテンプレートファイルが自動的に作成される。

$ bin/rails g controller foo bar

アクションを追加

作成されたコントローラクラスのソースファイルはapp/controllersディレクトリにfoo_controller.rbという名前で作成されるので、これを開きindexアクションを追加する。

アクションは単なるメソッドなのでFooControllerクラスのindexメソッドという形でFooコントローラーのindexアクションとなる。

$ vim app/controllers/foo_controller.rb
class FooController < ApplicationController
  def index
    @message = "Hello World!"
  end
end

作成したコントローラーに対応するビューはapp/viewsディレクトリにあるコントローラー名のディレクトリとなる。この場合はapp/views/fooディレクトリを作成して、その中にアクションに対応するテンプレートファイルを作成する。テンプレートファイル内ではindexメソッドで作成した@message変数の値を表示してみる。

$ vim app/views/foo/index.html.erb
<h1>Foo#index</h1>
<p><%= @message %></p>

ルーティングを設定

コントローラ、アクション、ビューが作成されたが、ユーザのアクセスで実行されなければ意味がないのでルーティングの設定をする。ここではルートディレクトリへのアクセスで、fooコントローラのindexアクションが実行されるようにする。

$ vim config/routes.rb
Rails.application.routes.draw do
  root "foo#index"
end

アクセスしてみる

作成したアプリケーションを実行する。

$ bin/rails s

ブラウザでhttp://localhost:3000にアクセスする。

Hoge

hogeというRailsアプリケーションの、fooコントローラのindexアクションが実行された。

スポンサーリンク