4

我不想从默认的“views”目录中提供我的 Sass 文件,而是将其更改为/assets/sass

以下尝试位于应用程序的主 ruby​​ 根文件中:

尝试1:

set :sass, Proc.new { File.join(root, "assets/sass") }

get '/stylesheet.css' do
    sass :core
end

有了这个我得到以下错误:

 myapp.rb:17 NoMethodError: undefined method `merge' for "/Users/x/x/x/mysinatraapp/assets/sass":String

尝试2:

get '/stylesheet.css' do
    sass :'/assets/sass/core'
end

尝试 3:

get '/stylesheet.css' do
    sass :'/assets/sass/core'
end

两者都返回以下错误:

Errno::ENOENT: No such file or directory - ./views/assets/sass/core.sass

尝试4:

get '/stylesheet.css' do
    sass :'../assets/sass/core'
end

这行得通!但是,一定有一些类似的东西set :sass, Proc.new { File.join(root, "assets/sass") }为我设置了这个?

4

5 回答 5

3

设置你的模板目录,然后手动渲染一个 Sass::Engine。

require 'sinatra'
require 'sass'

SASS_DIR = File.expand_path("../stylesheets", __FILE__)

get "/" do
  erb :index
end

get "/stylesheets/:stylesheet.css" do |stylesheet|
  content_type "text/css"
  template = File.read(File.join(SASS_DIR, "#{stylesheet}.sass"))
  Sass::Engine.new(template).render
end
于 2012-11-05T23:40:17.890 回答
1

你可能想看看这篇文章。http://railscoder.com/setting-up-sinatra-to-use-slim-sass-and-coffeescript/

在浏览了许多站点之后,我能够通过本文实现将我的 sass 文件放在不同的目录而不是“views”目录中。

于 2012-10-28T01:36:57.377 回答
1

目前没有这样的方法,因为 Sinatra 目前只接受一个视图目录。

您可以尝试使用sinatra-compass并且set :compass, :sass_dir => 'assets'只在您的视图文件夹中放置一个 sass 文件,这将简单地@import stylesheet.sass或者您可以覆盖#sass

helpers do
  def sass(template, *args)
    template = :"#{settings.sass_dir}/#{template}" if template.is_a? Symbol
    super(template, *args)
  end
end

set :sass_dir, '../assets'
于 2010-05-30T15:49:27.573 回答
0

我目前无法自己测试,但是您是否尝试过以下方法。

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

编辑Sass 参考也可能有所帮助。

于 2010-05-28T08:13:07.937 回答
0

这可能无济于事,因为我猜您还有其他views要保留的内容,但是您也可以更改views目录...

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

然后你可以这样做:

get '/stylesheet.css' do
    sass :'sass/core'
end
于 2010-05-30T11:39:04.623 回答