如何配置Sinatra以使用自定義的SCSS目錄? 我嘗試了以下解決方案,但這對我無效。Sinatra SASS自定義目錄
class SassEngine < Sinatra::Base
set :views, File.dirname(__FILE__) + '/sass'
get '/sass/*.scss' do
filename = params[:splat].first
sass filename.to_sym
end
end
如何配置Sinatra以使用自定義的SCSS目錄? 我嘗試了以下解決方案,但這對我無效。Sinatra SASS自定義目錄
class SassEngine < Sinatra::Base
set :views, File.dirname(__FILE__) + '/sass'
get '/sass/*.scss' do
filename = params[:splat].first
sass filename.to_sym
end
end
實際上官方文檔有一個完全針對這個用例的章節。
爲了讓這裏更容易是代碼(從文檔拍攝):
set :views, :sass => 'views/sass', :haml => 'templates', :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/a_css_file.css' do
sass :a_css_file
end
或更普遍的方法:
get '/css/*.css' do
file = params[:splat].first
sass file.to_sym
end
雖然最後一個不是一個好方法,但如果 調用不存在的文件,它將導致錯誤。
我找到了解決方案。
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'
謝謝,所以,我應該在哪裏放置.css文件?放入我的應用程序根目錄中的css文件夾? –
你的意思是你的sass文件?無論你在'set:views'調用中定義了什麼。通常我會建議'app_root/views/sass'(這是上面代碼中提供的) – robustus