我是新来的红宝石世界和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
在子目录中的两个不同的文件。我的问题是,苗条试图相对路径文件的路径,它看起来像这样的模板呈现:
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
文件中的所有代码,通常它工作,但现在我不确定如何解决此路径问题。
我觉得它必须是设置的东西,因为我在''路由中尝试了'set:views,File.expand_path(File.join(__ FILE__,'../../ views'))''。 rb'文件,似乎我得到了一个新的错误,但关于不能解决路径的错误消失了。我想我喜欢你发布更好的第二种方式。我分裂文件的原因是因为我试图实现类似于MVC的体系结构。诚然,我没有做出几个单独的应用程序,它只是一个,所有路线都将解析为索引,因为我将使用角度来浏览页面。 – Roland
@rolandjitsu在我的回答中没有提到的东西:在你的问题中,你有'set:views,File。加入(:root.to_s,'views')',这是错误的 - 它会产生'root/views'。您可能打算使用应用程序根目录设置。无论如何,默认是'views',所以你根本不需要那条线。 – matt
是的,我认为':root'会给我我的应用程序路径的根。有没有另外一种方法来获取并追加所需的字符串?事实上,我并不需要它为我的看法,但我确实需要它为我的静态资产,因为他们将在比默认的另一个文件夹'public'一个 – Roland