第一次使用Sinatra,還滿好玩的。
只要輸入gem install sinatra
安裝
之後在ruby檔中require "sinatra/base"
就可以使用了
each_with_index
原來要使用each_with_index來取出index,我還在想說沒有i怎麼用@@
1 2 3 4 5 6
| <% @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差不多
1 2 3 4 5
| 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
1 2 3 4 5 6 7 8 9
| <html> <head> <meta charset="utf-8"/> <title>Erb layout</title> </head> <body> <%= yield %> </body> </html>
|
這是app.rb也就是route
1 2 3 4 5 6 7 8 9 10
| 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
其實可以不用設定,預設就會套用了。