首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Ruby的Cuba框架中链接样式表

在Ruby的Cuba框架中链接样式表
EN

Stack Overflow用户
提问于 2016-06-23 16:00:22
回答 2查看 258关注 0票数 3

这看起来应该很简单,但我不知道如何将stylesheet链接到Cuba应用程序中的erb模板。

hello_world.rb

代码语言:javascript
复制
require "cuba"
require "cuba/safe"
require "cuba/render"
require "erb"

Cuba.use Rack::Session::Cookie, :secret => "__a_very_long_string__"

Cuba.plugin Cuba::Safe
Cuba.plugin Cuba::Render

Cuba.define do
  on root do
    res.write view("home")
  end
end

views/layout.erb

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">

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

  <body>
    <div>
      <h1>Hello</h1>
    </div>
  </body
</html>

config.ru

代码语言:javascript
复制
require "./hello_world"
run Cuba

styles/basic.css

代码语言:javascript
复制
h1 {
   font-size: 128px;
}

div {
    padding: 50px;
    margin: 100px;
}

我尝试过使用一些Sinatra标准,比如将css放在一个名为public的目录中,以及使用<link href="<%= url('styles/basic.css') %>" rel="stylesheet" type="text/css" />,但是没有什么效果。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-23 19:00:03

古巴不提供固定资产。您可以为此使用Rack::Static

代码语言:javascript
复制
# hellow_world.rb
Cuba.use Rack::Static,
  root: "public",
  urls: ["/javascripts", "/css", "/images"]

然后,参考视图中的此文件夹。

代码语言:javascript
复制
# layout.erb
<link href="/public/css/basic.css" rel="stylesheet" type="text/css" />
票数 2
EN

Stack Overflow用户

发布于 2018-03-26 07:32:27

古巴应用程序是(瘦)罩下的Rack应用程序。

Rack应用程序是可以响应#call方法的任何对象,它生成带有状态代码的数组、带有头和主体的散列。

Rack中间件与应用程序基本相同。唯一的区别是它们在请求响应周期中所扮演的角色:

  • 应用程序是请求链的最终目的地,也是生成原始响应的最终目的地。
  • 另一方面,中间件位于客户端和应用程序之间,在到达应用程序之前对请求进行预处理,或者在应用程序生成后进行后处理响应。

当您运行应用程序时,您将与中间件堆栈一起运行它。每个请求都从客户端通过堆栈发送到应用程序,然后它的响应从应用程序通过堆栈传递到客户机。

古巴不隐式地添加任何中间件或端点来处理静态文件。这意味着,如果一个请求没有被任何能够处理它并到达您的应用程序的中间件拦截,那么您的应用程序就没有处理它的路径,它将得到404 d。

与此相反,Sinatra确实为您隐式地处理静态文件请求。

这就是为什么跑

代码语言:javascript
复制
Cuba.use Rack::Static,
  root: "public",
  urls: ["/javascripts", "/css", "/images"]

解决您的问题,因为它添加了一个中间件,该中间件将响应

代码语言:javascript
复制
<link href="/public/css/basic.css" rel="stylesheet" type="text/css" />

在你的应用程序需要之前。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37996579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档