尝试使用rack gem和erb服务文件,erb正在渲染的html文件中的css链接标签似乎不起作用:
用于执行erb和呈现视图的助手:
def render(file, *args)
template = File.read("public/#{file}.html.erb") ||
File.read("public/404.html.erb")
template_output = ERB.new(template).result(binding)
res = Rack::Response.new(bind_layout { template_output })
end
def bind_layout(&block)
layout = File.read("public/layout.html.erb")
ERB.new(layout).result(binding)
end
使用css导入布局:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="stylesheets/layout.css">
</head>
<body>
<div class="main">
<h1>ONM LAYOUT</h1>
<%= yield %>
<h2>onfoototer</h2>
</div>
</body>
</html>
该页面服务的模板和布局正确,什么是不正确的链接的css
1条答案
按热度按时间1hdlvixo1#
问题是,rack将文件解释为html,并与绑定的html视图一起提供服务。我找到的解决方案是使用Rack::Static来正确地服务静态css:
use Rack::Static, :urls => ['/static/stylesheets', 'layout.css']
。