T time

プログラミングや電子工作、各種ガジェットに関するブログです。

LotusでOne-file-applicationを作る(2) - ControllerからViewへデータを渡す

前回は Lotus で作る One-file-application の基本を紹介しました。

今回はあれを修正し、コントローラーからビューへデータを渡し、それを表示してみたいと思います。

今回のゴール

前回は、http://localhost:2300/ にアクセスすると 'Hello World!' と表示するだけでしたが、今回は現在時刻を表示してみましょう。

コントローラーで現在時刻を作成し、それをビューで表示します。 Webブラウザで以下のように表示されます。

f:id:tatur0u:20150622230312p:plain

config.ru

まずは今回作成するコード全体を見てみましょう。 今回も全てのコードは config.ru に書かれています。

前回と比較して、コントローラーとビューにコードが足されています。 それぞれ説明していきます。

Controller

expose: time

まず目につくのは expose: time です。 これは、コントローラーの変数をビューで使えるようにするためのものです。

expose: <変数名>

でその変数をビューが使用可能になります。つまり必要な変数だけをビューに解放するわけです。これも Lotus の思想がよく現れてる機能です。

@time = Time.now

次は @time = Time.now です。 現在時刻を作成しています。 expose したのと同じ名前のインスタンス変数として作成します。

View

render

render メソッドを変更しました。

expose された time を表示しています。 これは普通の Ruby の記法ですね。

コード

今回作ったアプリケーションの全ファイルは、以下から入手できます。

github.com

あとがき

今回は、コントローラからビューにデータを渡す方法を見ました。
おさらいです。

  • コントローラはビューに渡す変数をインスタンス変数として定義する
  • コントローラはビューに渡す変数を expose する
  • ビューは expose された変数を表示する

いかがでしょう。 ここまでは難しいところは無いと思います。

次回は、ルーティング情報を追加するサンプルを紹介します。