2012-09-09 54 views
8

我使用Sinatra,並且一直試圖加載一些樣式表。我試過我的erb中的正常html link標籤,但那沒有奏效。在Sinatra中加載樣式表

香港專業教育學院試圖

<head> 
    <link href="style.css" rel="stylesheet" type="text/css" /> 
</head> 

這不是我使用的URL的一個問題,有沒有實現這一目標的一些特殊的方法?

回答

11

當您使用href="style.css"時,您將指定一個指向樣式表的相對鏈接。您的瀏覽器將請求的實際路徑將取決於當前頁面的URL,因此,例如,如果你有一個像路線:

get '/things/:id' do 
    #look up thing with id = :id 
    erb :my_view 
end 

那麼瀏覽器將尋找在樣式表/things/style.css。如果您的樣式表位於您的public目錄的頂層,這顯然不起作用。

快速修復是使用樣式表的絕對路徑:href="/style.css"(請注意/字符)。這將使瀏覽器始終在服務器的根目錄下查找樣式表。

這假定您的應用程序總是安裝在您的服務器的根目錄下,並且如果您在子目錄中運行應用程序將會失敗。你希望能夠說「在這個應用程序的根目錄下尋找樣式表,無論它發生在哪裏」。在Sinatra,你可以通過使用url helper method來做到這一點。使用ERB作爲模板語言,這將是這樣的:

<link href="<%= url('/style.css') %>" rel="stylesheet" type="text/css" /> 

這將確保鏈接style.css無論您的應用程序位於將是正確的。