1

我可能遗漏了一些东西,但是如何在 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 应用程序 '/' 运行 Rails。实际上我希望每条路线都由 Sinatra 应用程序处理。

4

2 回答 2

3

您只需index.html要从public文件夹中删除。

您可以安装整个应用程序,mount Core, :at => '/'以便让 Sinatra 完成所有路由。

于 2012-07-07T11:20:08.650 回答
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'
于 2012-07-07T04:00:02.560 回答