GITHUB:https://github.com/coasterb/foo_bar_stackoverflow
我无法使用'/ foo / bar'路径访问公共目录中的样式表。
我认为这是一个我没有定义public_folder
的问题,但事实并非如此。
require 'sinatra'
require 'haml'
set :static, true
set :public_folder, "public"
get '/foo' do
haml :foo
end
get '/foo/bar' do
haml :bar
end
#目录层次结构 - 这不起作用
+Webapp
--app.rb
-+public
---stylesheet.css
-+views
---foo.haml
---bar.haml
#目录层次结构 - 这确实有效,但我现在有了我的文件的副本。
+Webapp
--app.rb
-+public
---stylesheet.css
--+foo
----stylesheet.css
-+views
---foo.haml
---bar.haml
本地主机:9396 /富/栏:
#foo/bar.html from the web browser.
<html>
<head>
<link href='./stylesheet.css' rel='stylesheet' type='text/css'>
</head>
<html>
在Chrome控制台中抛出“404 not found”错误,但不会在/ foo控制台中抛出错误。
haml bar.haml:
!!!
%html
%head
%link{:href=>"./stylesheet.css", :rel => "stylesheet", :type => "text/css"}
答案 0 :(得分:1)
取消领先的./
;这将指向/foo/bar/stylesheet.css
,正如@Arman在上面的评论中提到的那样。
此外,您不需要使用:public_folder
设置,因为您只是将其设置为默认值。
%link{:href => '/stylesheet.css', :rel => 'stylesheet', :type => 'text/css'}
如果你想专门为css文件手动设置目录,或者例如在公共场所下sub-dir,你可以使用
:css_dir
答案 1 :(得分:1)
Use a layout for the head section:
!!!
%html
%head
%link{:href=>"/stylesheet.css", :rel => "stylesheet", :type => "text/css"}
%body
= yield
%p Hello World
而不是像这样在每个视图中放置所有内容:
!!!
%html
%head
%link{:href=>"/stylesheet.css", :rel => "stylesheet", :type => "text/css"}
%body
%p Hello World
另外,Sinatra is at version 1.4.5 now,除非你迫切需要坚持1.3,否则不要。使用Ruby v1.9也是如此,这更容易理解,但是当v2可用时,使用它并没有很多好的理由,并且可以运行所有1.9代码。