Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 在Ruby中链接样式表';s古巴框架_Css_Ruby_Erb_Rack_Cuba - Fatal编程技术网

Css 在Ruby中链接样式表';s古巴框架

Css 在Ruby中链接样式表';s古巴框架,css,ruby,erb,rack,cuba,Css,Ruby,Erb,Rack,Cuba,这看起来应该很简单,但我不知道如何在Cuba应用程序中将样式表链接到erb模板 你好_world.rb 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.

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

你好_world.rb

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
<!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>
视图/布局.erb

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
<!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>
样式/basic.css

h1 {
   font-size: 128px;
}

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

我尝试过使用一些
Sinatra
标准,比如将我的
css
放在名为
public
的目录中,以及使用
,但没有任何效果。

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

# hellow_world.rb
Cuba.use Rack::Static,
  root: "public",
  urls: ["/javascripts", "/css", "/images"]
然后,在视图中引用此文件夹

# layout.erb
<link href="/public/css/basic.css" rel="stylesheet" type="text/css" />
#layout.erb

Cuba应用程序是(薄)机罩下的机架应用程序

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

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

  • 应用程序是请求链的最终目的地,也是生成原始响应的目的地
  • 另一方面,中间件位于客户端和应用程序之间,在应用程序到达应用程序之前进行预处理,或者在应用程序生成后对其进行后处理响应。
当你运行你的应用程序时,你会把它和一个中间件堆栈一起运行。每个请求从客户端通过堆栈发送到应用程序,然后其响应从应用程序通过堆栈发送到客户端

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

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

这就是为什么跑步

Cuba.use Rack::Static,
  root: "public",
  urls: ["/javascripts", "/css", "/images"]
解决您的问题,因为它添加了一个中间件来响应在中生成的请求

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


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

谢谢…由于某些原因,确切的代码不起作用(可能是用户错误)…当我使用
Cuba.use Rack::Static,:url=>[“/css”]
而不使用
public
目录时,它就起作用了。仍然给了您正确的答案,因为
Rack::Static
是解决方案。