我可能会遗漏一些东西但是如何在Rails中映射“/”以执行Sinatra应用程序?我有:
class Core < Sinatra::Base
get '/' do
"This is root but it is caput."
end
get '/test' do
"This is test and it works"
end
end
所以,如果我这样做路由:
match '/test' => Core
match '/'=>Core
只有'/ test'触发Sinatra app'/'运行Rails。实际上我希望每条路线都由Sinatra app处理。
答案 0 :(得分:3)
您只需要从index.html
文件夹中删除public
。
您可以使用mount Core, :at => '/'
安装整个应用,以便让Sinatra完成所有路由。
答案 1 :(得分:0)
鉴于Sinatra创建了一个用于定义路由的DSL(不能直接作为方法访问),您可能需要添加一个辅助方法,以便您可以专门调用该路由: 即。
def launch_sinatra_app
status, headers, body = call env.merge("PATH_INFO" => '/')
[status, headers, body.map(&:upcase)] # proper rack response
end
然后在config / routes.rb中为rails:
match :root => 'Core#launch_sinatra_app'