LotusでOne-file-applicationを作る(2) - ControllerからViewへデータを渡す
前回は Lotus で作る One-file-application の基本を紹介しました。
今回はあれを修正し、コントローラーからビューへデータを渡し、それを表示してみたいと思います。
今回のゴール
前回は、http://localhost:2300/
にアクセスすると 'Hello World!' と表示するだけでしたが、今回は現在時刻を表示してみましょう。
コントローラーで現在時刻を作成し、それをビューで表示します。 Webブラウザで以下のように表示されます。
config.ru
まずは今回作成するコード全体を見てみましょう。 今回も全てのコードは config.ru に書かれています。
前回と比較して、コントローラーとビューにコードが足されています。 それぞれ説明していきます。
Controller
expose: time
まず目につくのは expose: time
です。
これは、コントローラーの変数をビューで使えるようにするためのものです。
expose: <変数名>
でその変数をビューが使用可能になります。つまり必要な変数だけをビューに解放するわけです。これも Lotus の思想がよく現れてる機能です。
@time = Time.now
次は @time = Time.now
です。
現在時刻を作成しています。
expose したのと同じ名前のインスタンス変数として作成します。
View
render
render
メソッドを変更しました。
expose された time
を表示しています。
これは普通の Ruby の記法ですね。
コード
今回作ったアプリケーションの全ファイルは、以下から入手できます。
あとがき
今回は、コントローラからビューにデータを渡す方法を見ました。
おさらいです。
- コントローラはビューに渡す変数をインスタンス変数として定義する
- コントローラはビューに渡す変数を expose する
- ビューは expose された変数を表示する
いかがでしょう。 ここまでは難しいところは無いと思います。
次回は、ルーティング情報を追加するサンプルを紹介します。