Sinatra 初體驗(2) template與layout

第一次使用Sinatra,還滿好玩的。 只要輸入gem install sinatra安裝 之後在ruby檔中require "sinatra/base"就可以使用了

each_with_index

原來要使用each_with_index來取出index,我還在想說沒有i怎麼用@@

<%  @images.each_with_index do |image, index| %>
	<h2><a href="/images/<%= index  %>"><%= image[:title] %></a></h2>
	<p>
		<img src="<%= image[:url]%>" alt="" />
	</p>
<% end %>

初次使用haml

一樣輸入gem install haml安裝 使用方法跟erb的template差不多

get "/images/:index" do |index|
  index = index.to_i
  @image = IMAGES[index]
  haml :"images/show"
end

比較有趣的地方是路徑前面都要多加個冒號。

view寫成這樣 /view/images/show.haml

使用layout

在views底下新增一個layout.erb views/layout.erb

 <html>
	<head>
		<meta charset="utf-8"/>
		<title>Erb layout</title>
	</head>
	<body>
		<%= yield %>
	</body>
</html>

這是app.rb也就是route

   get '/images' do
    @images = IMAGES
    erb :images
  end

  get "/images/:index" do |index|
    index = index.to_i
    @image = IMAGES[index]
    haml :"images/show", layout: true
  end

這邊的haml預設的 layout 會找 views/layout.haml 而不是 layout.erb,所以會找不到。 這邊 layout: true 其實可以不用設定,預設就會套用了。

Updated: