2013-06-01 53 views
-1

我有一個數組,@genres,我從查詢我的sinatra服務器上的數據庫中獲得。我使用這個流派列表來填充我的導航欄中的下拉菜單。我希望此列表可用於每個頁面,並且我還希望列表每次更新,以防在頁面加載之間將新類型添加到數據庫。Sinatra的全局實例變量

很顯然,我可以添加運行SQL查詢並填充@genre變量對每個getpostdelete方法的代碼,但好像很多重複的代碼。有沒有一種更優雅的方式來創建一個通用於所有sinatra http方法的變量?

+0

爲什麼你不花時間來添加一些示例代碼,而不是讓我們想象所有的o f it? –

回答

3

使用過濾器之前嘗試:

before do 
    @genres ||= Genre.all # or however you access the array 
end 

如果你想從具有可變省略put請求,定義一個條件:

set :method do |method| 
    condition do 
    method.include? request.request_method.downcase.to_sym 
    end 
end 

然後,你可以這樣做:

before :method => [:get, :post, :delete] do 
    @genres ||= Genre.all 
end