我使用Sinatra,並且一直試圖加載一些樣式表。我試過我的erb中的正常html link
標籤,但那沒有奏效。在Sinatra中加載樣式表
香港專業教育學院試圖
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
這不是我使用的URL的一個問題,有沒有實現這一目標的一些特殊的方法?
我使用Sinatra,並且一直試圖加載一些樣式表。我試過我的erb中的正常html link
標籤,但那沒有奏效。在Sinatra中加載樣式表
香港專業教育學院試圖
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
這不是我使用的URL的一個問題,有沒有實現這一目標的一些特殊的方法?
當您使用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
無論您的應用程序位於將是正確的。