概要
ここ最近HANAMI(旧名 Lotus)というRuby製の軽量Webフレームワークを勉強しています。
筆者はRuby on Rails Sinatraを使っているのですが、少し自分の技術の幅を広げようと思い触れちゃいました。
問題
Ruby on RailsやSinatraではController部分にインスタンス変数を定義し、
ViewではControllerで定義したインスタンス変数を使うという場面が多々あります。
HANAMIも同じようにしてみるとできないことがわかりました。
そこでドキュメントです。(困った時はドキュメントに頼るしなかない!)
解決
ドキュメントにはこう書いてありました。
We use a simple and powerful mechanism to achieve our goal: exposures. Exposures create a getter on the action for the given name(s) and only the whitelisted instance variables are made available to the corresponding view.
簡単に言うとexporseでViewに共有してあげるものを明示してあげないとControllerからViewに渡せないです。
HANAMI ControllerとViewのデータの共有の仕方
exporseに明示したものはGetterが発行させるため、ViewではGetterを使って呼び出します。
exporseに明示されてないインスタンス変数をViewで使った場合、No Method Errorを吐きます。
Viewと共有したい場合はexporseで明示してあげることを忘れてはいけないです。
まだそこまでHANAMIを触っていないので、感覚が掴めたらブログ書こうかな。