幸ログ

ナレッジを溜めていきます

HANAMI(旧名 Lotus) ControllerとViewのデータの共有の仕方

概要

ここ最近HANAMI(旧名 Lotus)というRuby製の軽量Webフレームワークを勉強しています。
筆者はRuby on Rails Sinatraを使っているのですが、少し自分の技術の幅を広げようと思い触れちゃいました。

問題

Ruby on RailsSinatraではController部分にインスタンス変数を定義し、
ViewではControllerで定義したインスタンス変数を使うという場面が多々あります。
HANAMIも同じようにしてみるとできないことがわかりました。 そこでドキュメントです。(困った時はドキュメントに頼るしなかない!)

解決

hanamirb.org

ドキュメントにはこう書いてありました。
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を触っていないので、感覚が掴めたらブログ書こうかな。

マサカリ待ってます!!