前記事
概要
前記事ではindex.htmlを作成してHello Worldを表示しましたが、次はindex.htmlではなく、サーバー側で動作する処理を作成し、文字列を表示してみます。
MVC概要
Ruby on railsではMVC(model-view-controller)というモデルを使用してアプリケーションを作成します。今回はこのうち、ViewとControllerの作成を行います。
mvcの詳細についてはwikipediaを参照願います。
コントローラーの作成
コマンドプロンプトでアプリケーションルートに移動し、以下のコマンドを入力します。
[bundle exec rails generate controller testlist]
testlistの部分がコントローラの名前(の一部)になりますので、自分のアプリケーション名にあった名前に変えてください。
少し待つと、以下のように生成されたファイルの一覧が表示されます。
アプリケーションルート\controllers\フォルダの中に作成されたファイルがコントローラのファイルになります。
class TestlistController < ApplicationController
end
関数の作成
次はwebサーバーへの問い合わせがあったときに動作する関数(アクションと呼びます)を作成します。
testlist_controller.rbの中に「hello」というアクションを追加します。コードは以下の通りです(2~4行目を追加)
class TestlistController < ApplicationController
def hello
render 'testlist/hello'
end
end
testlist/helloというページを呼び出すだけの関数です。
ルーティングの設定
ルーティングの設定を行い、ブラウザから呼び出されたときにどのアクションを実行するのかを定義します。
設定は「アプリケーションルート\config\routes.rb」ファイルに記述する事で行います。
テキストファイルを開くと、以下のように記述されています。
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end
#で始まる行はコメントのため、何も定義されていない状態です。
設定方法は色々あるらしいですが、今回はURLに応じてどのアクションを呼び出すかを定義する方法で定義を追加します。
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
get 'testlist' , to: 'testlist#hello'
end
getで始まる行が追加した行です。この設定により、「http://localhost:3000/hello」を開いたときに、コントローラー「testlist」の「hello」アクションが呼び出されるようになります。
ビューの作成
ビューとは、ブラウザからのリクエストに対して返す結果を表示する内容を返すもの。あらかじめ結果として返される文章をテンプレートとして作成しておき、アクションが処理したデータをテンプレートに埋め込み結果を返すようにすると、見た目を変えたいときにビューのテンプレートのみ変更することで対応が可能となる。
テンプレートは以下の場所に作成する。
[アプリケーションルート\app\views\testlist\]
テンプレートファイル名は「アクション名.html.erb」とする必要があります。helloアクションに対するテンプレートを作成するため、ファイル名は「hello.html.erb」になります。
ファイルを開き、htmlのBody部にあたる部分を記述します。その他の部分は自動的に付与されます。
Hello
<p>
Hello!
</p>
動作確認
ブラウザで「http://localhost:3000/testlist」にアクセスして、上記hello.html.erbの内容が表示されれば成功です。
これでコントローラとビューを使用したHello表示は終了です。
コメント