rails 裡內建有 flash 的訊息功能,
Sinatra 卻欠卻此好用功能。
(flash不是Adobe的Flash,只是出現訊息作用的名稱)
在 rails 裡的flash功能是指,
在這個 action 執行結果後,
有一些的訊息要帶到下一個 action,
常會用到像這樣子:
def order
flash[:info] = "預約成功,請確認"
redirect_to :action => 'list'
end
安裝此 gem 套件:
$ gem install sinatra-flash
Fetching: sinatra-flash-0.3.0.gem (100%)
Successfully installed sinatra-flash-0.3.0
1 gem installed
在主程式寫這兩個動作來測試:
require 'sinatra/flash'
get '/first' do
now = Time.now
flash[:info] = "在 first 執行的時間是 #{now}"
redirect '/second'
end
get '/second' do
if flash[:info]
"從別處獲得flash訊息是:#{flash[:info]}"
else
"無flash"
end
end
先存取 http://i5.tagbible.net/second
獲得此畫面:
再存取 http://i5.tagbible.net/first 馬上會導到 first 的頁面:
就把簡單的flash的機制建立,
對於要在sinatra做類似MVC或
使用者介面上訊息傳達是實用的功能。