css - 在 Sinatra 中提供静态文件时出现问题

标签 css ruby static sinatra

我发现了类似的问题并遵循了答案,但我没有运气。 我正在尝试使用 Sinatra 将 CSS 文件提供给我的某些页面,但它并不适用于所有页面。

我有一个与“app.rb”处于同一级别的公共(public)文件夹。公用文件夹结构如下:

public
  -css
  -images
  -js

在我的 app.rb 中,我只有一行,如下所示:

set :public_folder, "public"

在我的布局中,我使用:

href="/public/css/main.css"

它适用于某些页面,例如我的索引和关于页面,但是一旦我深入研究我的 View ,它就不起作用了。如果我手动设置路线,我可以让它工作,但我不想最终为我添加的所有 future View 执行此操作。这就是我让它发挥作用的方法:

change to href="/css/main.css"

get "/css/main.css" do
  redirect "/main.css"
end
get "/posts/css/main.css" do
  redirect "/css/main.css"
end

所有 View 都使用相同的布局和 css 文件的相同 url,当我深入 View 时,文件夹会添加到 css url 的开头,这就是我为其添加路由的原因。有没有解决的办法?对此仍然陌生:)

谢谢。

最佳答案

首先,我认为您不需要在布局文件中使用“public”。

href="/css/main.css"

其次,我建议使用 scss/sass 进行样式设置。您只需将 .scss 文件保留在主/views 目录中即可。

app.rb
- views
 - index.haml/html
 - style.scss

在您的 .rb 应用程序文件中:

get '/style.css' do
  scss :style
end

那么,在你看来:

href="/style.css"

希望有帮助!

关于css - 在 Sinatra 中提供静态文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237316/

相关文章:

ruby - 在扩展自身的模块中的实例方法中调用单例方法

c# - 返回后代的单例实例

c++ - C++中的单例模式

javascript - 防止 <label></label> 调整大小

CSS :not pseudo class is not taking effect

ruby - 安装 ruby​​ gems 时构建 native 扩展错误

ruby - 如何在 Ruby 中为 clamd 实现 INSTREAM 协议(protocol)?

java - 从Java中的静态方法获取类名

html - 如何在 BEM 中使用伪类?

javascript - jQuery Position 元素在鼠标悬停时彼此相邻 - 修复了可滚动的 div