这看起来应该很简单,但我不知道如何将stylesheet链接到Cuba应用程序中的erb模板。
hello_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
endviews/layout.erb
<!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
require "./hello_world"
run Cubastyles/basic.css
h1 {
font-size: 128px;
}
div {
padding: 50px;
margin: 100px;
}我尝试过使用一些Sinatra标准,比如将css放在一个名为public的目录中,以及使用<link href="<%= url('styles/basic.css') %>" rel="stylesheet" type="text/css" />,但是没有什么效果。
发布于 2016-06-23 19:00:03
古巴不提供固定资产。您可以为此使用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" />发布于 2018-03-26 07:32:27
古巴应用程序是(瘦)罩下的Rack应用程序。
Rack应用程序是可以响应#call方法的任何对象,它生成带有状态代码的数组、带有头和主体的散列。
Rack中间件与应用程序基本相同。唯一的区别是它们在请求响应周期中所扮演的角色:
当您运行应用程序时,您将与中间件堆栈一起运行它。每个请求都从客户端通过堆栈发送到应用程序,然后它的响应从应用程序通过堆栈传递到客户机。
古巴不隐式地添加任何中间件或端点来处理静态文件。这意味着,如果一个请求没有被任何能够处理它并到达您的应用程序的中间件拦截,那么您的应用程序就没有处理它的路径,它将得到404 d。
与此相反,Sinatra确实为您隐式地处理静态文件请求。
这就是为什么跑
Cuba.use Rack::Static,
root: "public",
urls: ["/javascripts", "/css", "/images"]解决您的问题,因为它添加了一个中间件,该中间件将响应
<link href="/public/css/basic.css" rel="stylesheet" type="text/css" />在你的应用程序需要之前。
https://stackoverflow.com/questions/37996579
复制相似问题