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
是解决方案。