【发布时间】:2014-02-16 14:12:04
【问题描述】:
我是 ruby 世界的新手,而 Sinatra 也是如此,所以我别无选择,只能在这里询问我不断遇到的错误。
我使用 Rack + Sinatra 和 Slim 作为模板引擎的组合。我的app.rb 设置如下:
module Pulsr
class StylusHandler < Sinatra::Base
set :views, File.dirname(__FILE__) + '/stylus'
get '/css/styles.css' do
stylus :styles
end
end
class Application < Sinatra::Base
register Sinatra::ConfigFile
config_file './config/config.yml'
use Pulsr::Api
use Pulsr::Routes
enable :logging, :dump_errors if Sinatra::Base.development?
disable :method_override, :run
set :public_folder, File.join(:root.to_s, 'static')
set :views, File.join(:root.to_s, 'views')
#set :static_cache_control, [:public, max_age: 60 * 60 * 24 * 365] if Sinatra::Base.production?
end
结束
Pulsr::Api 和 Pulsr::Routes 位于子目录中的两个不同文件中。我遇到的问题是 slim 尝试相对于路由文件的路径渲染模板,如下所示:
module Pulsr
class Routes < Sinatra::Base
get '/*' do
slim :index
end
end
结束
所以,我的文件夹结构如下所示:
- config
- config.yml
...
- controllers
- routes.rb
- views
- index.slim
- app.rb
- config.ru
- Gemfile
...
我收到此错误:No such file or directory @ rb_sysopen - /Users/rolandjitsu/Projects/Products/pulsr/controllers/views/index.slim 模板实际放置在views 文件夹中的上一级。
在我拥有 app.rb 文件中的所有代码之前,它通常可以工作,但现在我不确定如何解决此路径问题。
【问题讨论】: