3

应用程序/控制器/app.rb

require 'sinatra'
get '/' do
  erb :index
end

应用程序/视图/index.erb

<html>
    <body>
        <p>Hello World</p>
    </body>
</html>

错误:

Errno::ENOENT at /
No such file or directory - .../app/controllers/views/index.erb

如何将 erb 配置为查看app/views而不是app/controllers/views

4

2 回答 2

10

您可以通过调整配置设置来实现此目的。由于您使用的是非标准设置,因此您需要告诉 Sinatra 您的应用程序的实际根目录是什么以及在哪里可以找到视图。在app/controllers/app.rb文件顶部添加:

# sets root as the parent-directory of the current file
set :root, File.join(File.dirname(__FILE__), '..')
# sets the view directory correctly
set :views, Proc.new { File.join(root, "views") } 

您可以在Sinatra 文档中阅读有关 Sinatra配置选项的更多信息。

于 2012-12-04T05:16:53.927 回答
3
set :views, Proc.new { File.join(root, "views") }

来自http://www.sinatrarb.com/configuration.html#__view_template_directory

编辑:显然这什么也没做,呵呵。最好有一个app/需要您的控制器的文件:

Dir.glob("controllers/*.rb").each { |r| require_relative r }

然后,app/views将是默认的视图目录。

于 2012-12-04T05:15:18.323 回答