3

app / controllers / app.rb

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

app / views / index.erb

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

エラー:

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

app/views代わりに調べるようにerbを構成するにはどうすればよい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 に答える