DHHのツッコミ
なお、DHHのツッコミは、以下の二点。とりあえず、自分用に、ツッコミの内容をメモっておいて、対応は後で考えます。
ビューロジックを別ファイルに分離できないか?
Amrita2はコンテンツの動的な部分をハッシュやPlain Ruby Objectのデータとして作成するのだが、私のプレゼンの中ではその処理をコントローラの中で行なうように書いている。これは説明の為の便宜で、実際には、Helperメソッドの中で行なうようなオプションもある。
DHHは、まず「コントローラの中にビューに関わるロジックがあると、"one controller, many in, many out" というRailsの考え方に合わない」と言っていた。これは、まあ当然の指摘だと思う(artonさんにも「ちょっとあれはね」と言われた)。
そして、Helperメソッドが使えることを説明したが、それよりは、別ファイルにビューを置くような方法の方がいいのではないかと言っていた。
(app/views/action/index.a2html) <span id='name' />
(コントローラ) @person = Person.find(....)
(app/views/action/index.a2logic) { :name = @person.name + "さん" }
つまり、index.a2htmlとペアになるindex.a2logicというファイルを新設して、ここに動的なデータを設定するロジックを書く。そのロジックは、(XmlBuilderがRubyコードをビューに書くのと同じような意味で)Rubyのコードになる。
こういうふうにできれば、Railsの思想と(今後の方向性に?)うまくはまるよ、というようなお話。
GIGAZINEで紹介されていた「Shopify」で使われている、Liquidというテンプレートシステムを参考が参考になるかも、というアドバイスもいただいた。これについては、これから調査予定。
Smartyの「モディファイア」のようなことができないか?
もうひとつは、XOOPSで使われている Smarty というテンプレートエンジンが持っている「モディファイア」という機能に相当するものは無いのか?という質問。
これについては、私がその機能を知らなかったので、ポイントをつかめなかった。Helperメソッド等で代用できるように思ったのだが、よくわからずじまい。
「Helperメソッドに書くなら、(上記のアクションごとの)ビューロジック内でメソッド定義できるようにした方がいい」というようなことも言っていた(ような気がする)。
もし、Smartyの「モディファイア」を便利に使ってる人がいたら、情報下さい。