2

カスタム SCSS ディレクトリを使用するように Sinatra を設定するには? 次の解決策を試しましたが、うまくいきませんでした。

class SassEngine < Sinatra::Base

set :views, File.dirname(__FILE__) + '/sass'

get '/sass/*.scss' do
    filename = params[:splat].first
    sass filename.to_sym
end

end
4

2 に答える 2

4

実際、公式ドキュメントには、まさにこのユースケースのセクションがあります。

簡単にするために、コードを次に示します(ドキュメントから取得):

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

最後の方法は適切な方法ではありませんが、存在しないファイルに対して呼び出すとエラーが発生します。

于 2012-09-04T19:19:46.223 に答える
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'
于 2012-09-06T05:26:26.630 に答える