[英]Variables for all views in Sinatra erb files
在sinatra中分配可以在所有視圖(所有erb文件)上使用的變量的最佳方法是什么。
我知道可以使用主文件中的全局變量(例如app.rb)來完成此操作,但是有沒有更好的方法而不使用全局變量呢? 例如在app.rb中,我可以做:
@@a = "hello"
get '/' do
erb :index
end
get '/hi' do
erb :page
end
以及在index.erb和page.erb文件中:
<%= @@a %>
但是,有沒有一種方法可以不使用全局變量呢?還是全局變量是做到這一點的最佳方法?
創建一個包含所有要訪問的字符串/變量的常量的模塊。 所有視圖都可以訪問您的模塊:
module StringConstants
LOGIN_PAGE = "Welcome to X"
LOGOUT = "See you again soon"
end
然后在您看來:
<%= StringConstants::LOGIN_PAGE %>
會話變量通常用於跨視圖訪問。 在sinatra中,這只是您的標准哈希:
session[:whatever] = "Hello"
設置后即可在任何地方訪問。 它將在每個用戶會話中獨立存在。
例如,我使用的常見輔助對象是:
# set session[:user] = user's ID when they log in
def user
@user ||= User.get(session[:user])
end
您可以使用user
在視圖或控制器中進行訪問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.