さて、Ruby on Rails!!
この間はscaffoldを作って満足して終わった。
これをベースにごちょごちょ弄くってるだけでも、それっぽいサイトは出来そうな感じになってる。
でも、やっぱ色々使いこなしたいよね?ってことでActiveRecordは使わないで純粋にViewとControllerの部分に絞って入門してみる。
とりあえず適当なフォルダで
$ rails controller_view_study
と打ち込んでプロジェクトを作成する。
別のプロンプトを立ち上げて、
$ cd controller_view_study $ ruby script/server
とやってサーバを起動する。
http://localhost:3000にアクセスして、開発サーバがちゃんと起動してるかどうかを確認!
ここまで数分で終わるね!
コントローラを作ろう
とりあえずコントローラを作る。
プロジェクトのフォルダへ移動してgenerateスクリプトでtopという名前のコントローラを作る。
$ ruby script/generate controller top
そうするとapp/controllerにtop_controller.rbが出来上がってる。
これがコントローラだ。
ブラウザでhttp://localhost:3000/topにアクセスしてみると…
Unknown action No action responded to index
と言われてしまう。
indexってアクションが無いよ!!!ということだね。
アクションってのは要はpublicなメソッドです。
追加しちゃいましょう。
TopController.rb
class TopController < ApplicationController def index end end
これでhttp://localhost:3000/topにアクセスしてみよう。
いい忘れてたけど、http://localhost:3000/topはhttp://localhost:3000/top/indexと同じことみたい。
今度は、下みたいなメッセージが出てくる。
Template is missing Missing template ./script/../config/../app/views/top/index.rhtml
アクションの次はtemplateが無いって。
app/views/top/index.rhtmlを作ればいいのか。
早速作る!!
中身は下の通り。単純なHello worldです。
<html> <head> <title>index</title> </head> <body> <h1>Hello world</h1> </body> </html>
これでhttp://localhost:3000/topにアクセス!
出た出た!
Hello world
って出ました。
このrhtmlっていうのがviewにあたるみたい。
そんでもって、viewとコントローラはフィールドを共有してる。
ということで、top_controller.rbとindex.rhtmlを下のように書き換えてみた。
top_controller.rb
class TopController < ApplicationController def index @message = "Hello world [#{Time.now}]" end end
index.rhtml
<html> <head> <title>index</title> </head> <body> <h1><%= @message %></h1> </body> </html>
@messegeというフィールドにHello world 今の時間という文字列を入れている。
index.rhtmlのほうでは@messageの中身を参照してメッセージを出力している。
ちなみに、<% %>で囲まれた所はRubyのコードが書ける。
ここらへんERBの文法らしいので後で勉強しよう。
<%= %>を使うと中の実行結果が出力される。
実行してみよう。
Hello world [Sun Jul 22 16:40:25 +0900 2007]
が表示された!
ちゃんと動いてるね。
今日はここまで。