10

我正在使用 Sinatra,并且一直在尝试加载一些样式表。我已经link在我的 erb 中尝试了普通的 html 标记,但这并没有奏效。

我试过了

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

这不是我使用的网址的问题,是否有一些特殊的方法可以实现这一点?

4

1 回答 1

15

当您使用 时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 中,您可以使用urlhelper 方法来做到这一点。使用 ERB 作为模板语言,如下所示:

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

这将确保style.css无论您的应用位于何处,指向的链接都是正确的。

于 2012-09-09T17:33:56.160 回答