HamlでHTMLを出力しようとは思わないのですが、XMLの場合は別です。噂ではrailsでテンプレートエンジンのごちゃまぜは出来ないという噂を聞いていたのですが、試して出来たのでメモっておきます。今回は、Atom出力にしてみましたが、拡張子をXMLにすることも勿論出来ます。その場合には適宜読み替えてください。
Gemfileに"haml"を追加
gem "haml"
bundle installもお忘れなく
$ bundle install
これで準備Ok。
controllerの作成
def show @upload = Upload.find(params[:id]) respond_to do |format| format.html # show.html.erb format.atom # この行を追加 end end
viewの作成
"show.atom.haml"を作成する。"show.html.erb"は削除しなくても良い。ファイルの中身は以下のような感じにする。Hamlは癖があるので、動くことを確認しつつ書くのがオススメ。
!!! XML %feed{ :xmlns => "http://www.w3.org/2005/Atom" } %title @blog.title %subtitle @blog.subtitle %id @blog.id %author %name hello %updated= Time.now - for entry in @blog.entries %entry %title= entry.title %link{ :href => entry.url } %published= entry.created_at %updated= entry.updated_at %id= entry.taguri %summary= entry.description
確認
例)http://localhost:3000/blogs/1.atom
Atom出力できているはず…!!
補足