如何配置 Sinatra 以使用自定义 SCSS 目录?我尝试了以下解决方案,但这对我不起作用。
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'