Dr.*_*ein 5 ruby routes path sass sinatra
我不想从默认的“views”目录中提供我的 Sass 文件,而是将其更改为/assets/sass
以下尝试位于应用程序的主 ruby 根文件中:
尝试1:
set :sass, Proc.new { File.join(root, "assets/sass") }
get '/stylesheet.css' do
sass :core
end
Run Code Online (Sandbox Code Playgroud)
这样我得到以下错误:
myapp.rb:17 NoMethodError: undefined method `merge' for "/Users/x/x/x/mysinatraapp/assets/sass":String
Run Code Online (Sandbox Code Playgroud)
尝试2:
get '/stylesheet.css' do
sass :'/assets/sass/core'
end
Run Code Online (Sandbox Code Playgroud)
尝试3:
get '/stylesheet.css' do
sass :'/assets/sass/core'
end
Run Code Online (Sandbox Code Playgroud)
两者都返回以下错误:
Errno::ENOENT: No such file or directory - ./views/assets/sass/core.sass
Run Code Online (Sandbox Code Playgroud)
尝试4:
get '/stylesheet.css' do
sass :'../assets/sass/core'
end
Run Code Online (Sandbox Code Playgroud)
这有效!但是,一定有什么东西可以set :sass, Proc.new { File.join(root, "assets/sass") }为我做好准备吗?
目前还没有这样的方法,因为 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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3400 次 |
| 最近记录: |