ber*_*kes 7 templates sinatra rackup
在致电sinatra本身时,$ ruby tubemp.rb有效.但通过rackup它没有.应用程序,以某种方式找不到内联模板.
#config.ru
require 'rubygems'
require 'sinatra'
set :environment, ENV['RACK_ENV'].to_sym
disable :run, :reload
require './tubemp.rb'
run Sinatra::Application
Run Code Online (Sandbox Code Playgroud)
返回的错误是:
No such file or directory - /home/ber/Documenten/ET_tubemp/code/views/index.erb:
Run Code Online (Sandbox Code Playgroud)
相关部分来自 tubemp.rb
get '/' do
#...
erb :index
end
__END__
@@ layout
<html>
...
<%= yield %>
@@ index
Welcome!
Run Code Online (Sandbox Code Playgroud)
不知何故,通过rackup,它希望视图存在于实际的视图文件中.我想当__END__包含左右时,机架无法处理令牌.
除了将模板移动到模板文件之外,我该如何处理?
来自文档:
源文件中定义的需要sinatra的内联模板会自动加载.
enable :inline_templates如果您在其他源文件中有内联模板,则显式调用.
在这种情况下,当你使用rackup它是你的config.ru那个调用require 'sinatra',而Sinatra正在查找该文件中的任何模板,并且没有找到任何模板.当您直接运行您的应用程序文件时,Sinatra会搜索tubemp.rb模板并找到它们.
要修复它,请添加
enable :inline_templates
Run Code Online (Sandbox Code Playgroud)
到您的tubemp.rb文件(以及任何其他具有内联模板的源文件).