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の「モディファイア」を便利に使ってる人がいたら、情報下さい。