我正在使用Sinatra,我一直在尝试加载一些样式表。我在我的erb中尝试过普通的html link
标记,但这没用。
我试过
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
这不是我正在使用的网址的问题,是否有一些特殊的方法来实现这一目标?
答案 0 :(得分:13)
使用href="style.css"
时,您指定了样式表的相对链接。浏览器请求的实际路径将取决于当前页面的网址,例如,如果您有以下路由:
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
的链接都是正确的。