我正在使用Sinatra,并且一直试图加载一些样式表。我已经尝试在我的erb文件中使用普通的html link
标签,但这并没有起作用。
我已经尝试过:
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
这与我使用的URL无关,有没有一些特殊的方法可以实现这一点?
我正在使用Sinatra,并且一直试图加载一些样式表。我已经尝试在我的erb文件中使用普通的html link
标签,但这并没有起作用。
我已经尝试过:
<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
如果你的样式表在public
目录的顶层,那么浏览器将会在/things/style.css
查找样式表是行不通的。
一个快速解决方法是使用你的样式表的绝对路径:href="/style.css"
(注意/
字符)。这将使浏览器始终在服务器根目录中查找样式表。
这假设你的应用程序始终挂载在服务器的根目录下,并且如果你在子目录中运行它,该方法将失败。要能够说“无论此应用程序位于何处,都在其根目录中查找样式表”,你可以在Sinatra中使用url
助手方法。使用ERB作为模板语言,代码如下:
<link href="<%= url('/style.css') %>" rel="stylesheet" type="text/css" />
这将确保无论您的应用程序位于何处,链接到style.css
的路径都是正确的。