css - 引用样式表

标签 css ruby sinatra

我是 Sinatra 的新手,正在尝试从 ERB 文件中引用样式表。我已经尝试了“Loading Stylesheets in Sinatra”中使用的方法,但样式表仍未加载。

我的 HTML 在 vi​​ews/index.rb 中,样式表在 views/styles/main.css 中。 Controller 逻辑在 app.rb 中。

当我将它加载到本地服务器时,HTML 本身正在显示。

文件夹结构是:

|-- app.rb
|-- config.ru
|-- Gemfile
|-- Gemfile.lock
|-- lib
|-- spec
|   |-- spec_helper.rb
|-- views
|   |-- index.erb
|   |-- styles
|   |   |-- main.css

app.rb 是:

get '/' do
  erb :index
end

index.erb 没有工作:

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

我的仓库是:https://github.com/natstar93/Thermostat-day3

谁能帮我弄清楚如何引用样式表?

最佳答案

Static assets like stylesheets should go in a public directory ,而不是 views,后者用于为每个请求生成不同输出的模板。

您应该在 views 旁边创建一个名为 public 的目录,并将 styles 目录复制到其中。然后样式表的 url 将是 /styles/main.css:

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

您可能还需要启用静态 Assets 服务(文档建议它在模块化应用程序中默认禁用,但实际上它似乎取决于 public 目录是否存在——它不能伤害是明确的)。将此添加到您的应用类以打开此功能:

enable :static

关于css - 引用样式表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328552/

相关文章:

html - 为事件添加 IMG 标签

ruby - mixin 是否应该对它们的包含类做出假设?

ruby - 为什么这个 Ruby 方法会返回 "void value expression"错误?

html - SCSS - 条件包含不起作用并且所有 block 都被执行

javascript - 在 Video.js 中使用 Font Awesome 图标?

html - 在 HTML 文件中添加外部 CSS

ruby - 导轨 4 : alternative for ActiveRecord 'all' as it is now deprecated

ruby-on-rails - 如何使用 Ruby/Tor 更改我的 IP 地址?

ruby - 无法使用 passenger/apache 服务我的 sinatra 应用程序

ruby - 使用 passenger + nginx 设置的 ruby​​ 应用程序上的 session 随机丢失