stMind

about Tech, Computer vision and Machine learning

sinatraでslimテンプレートエンジンを使う

satojkovic/instagram_app
instagram appでslimテンプレートエンジンを使ってみた。

Slim - A Fast, Lightweight Template Engine for Ruby

views/index.slimを次のように用意。<>を書かずにhtmlタグを書くというのは新鮮。
あと、制御構造(ifやfor)を使う場合には、マイナス(-)をつける。

doctype html
html
  head
    title instagram app

  body
    h1 #{@user.username}'s recent photos

    - @user_recent_media.each do |media|
      img src='#{media.images.thumbnail.url}'/

      - if media.caption?
        h3 #{media.caption.text}
      - else
        br

アプリケーションの本体の方では、APIで取得したユーザーに関する情報とメディアに関する情報を
インスタンス変数に代入しておく。あとは、slim :indexで./views/index.slimが表示される。

get "/feed" do
  client = Instagram.client(:access_token => session[:access_token])
  @user = client.user
  @user_recent_media = client.user_recent_media
  slim :index
end