2012-09-05 114 views
1

我有問題讓我的薩姆工作與我的哈姆模板。Sinatra自定義SASS目錄

最近,我在下面我主要sinatra.rb應用程序代碼:

require 'sinatra' 
require 'dm-core' 
require 'dm-migrations' 
require 'haml' 
require 'sass' 
require 'shotgun' 


set :views, :sass => 'views/css', :haml => 'template', :default => 'views' 

helpers do 
def find_template(views, name, engine, &block) 
    _, folder = views.detect { |k,v| engine == Tilt[k] } 
    folder ||= views[:default] 
    super(folder, name, engine, &block) 
end 
end 


get '/css/styles.css' do 
sass :styles 
end 


get '/' do 
haml :index 
end 


I have following application directory structure: 
site 
|site.rb 
|-sass > styles.scss (my scss file generate css realtime using sass --watch sass:css command         
|-css > styles.css 
|-template > index.haml 

我index.haml文件,該文件是在模板文件夾中呈現的罰款。

我index.haml模板:

!!! XML 
!!! 
%html 
%head 
    %title Some title 
    %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} 
    %link{"rel" => "stylesheet", "href" => "views/css/styles.css", "type" => "text/css"} 
%body 
    %h1 Some h1 
    %p Some p 

回答

2

你已經給出了你的視圖文件的路徑,而不是路徑來顯示SASS文件的路徑。

%link{"rel" => "stylesheet", "href" => "/css/styles.css", "type" => "text/css"} 
2

您需要設置SASS views目錄,以正確的。

set :views, :sass => 'views/sass', :haml => 'template', :default => 'views' 

如果您希望sass返回呈現的styles.css,那麼它需要從sass文件所在的位置開始。如果你想讓它返回真正的.css輸出,那麼不要讓sass在你的路由中渲染它,只要返回文件。

+0

我已經把我的工作目錄到一個你建議我。另一個問題是我應該把我的.css/.scss文件放在哪裏?進入我的應用程序根目錄? Atm im我的Shothun服務器產生以下錯誤: Errno :: ENOENT - 沒有這樣的文件或目錄 - views/css/styles.sass: –

+0

您應該將.scss文件放在您設置sass views目錄的任何位置因爲那是它尋找那些觀點的地方。 –

0

我找到了解決方案。

require 'sinatra' 
require 'dm-core' 
require 'dm-migrations' 
require 'haml' 
require 'sass' 
require 'shotgun' 


set :views, :scss => 'views/', :haml => 'template', :default => 'views' 

helpers do 
def find_template(views, name, engine, &block) 
    _, folder = views.detect { |k,v| engine == Tilt[k] } 
    folder ||= views[:default] 
    super(folder, name, engine, &block) 
end 
end 


get '/css/:name.css' do 
    scss :styles 
end 


get '/' do 
    haml :index 
end 

因此,大家可以看到,而不是:

get '/css/styles.css' do 
    sass :styles 
end 

它應該是:

get '/css/:name.css' do 
    scss :styles 
end 

然後我把我的styles.scss到我的/ views文件夾。您.scss文件SCSS =>「路徑:但是,您可以通過編輯修改目的地目錄

set :views, :scss => 'views/', :haml => 'template', :default => 'views'