Sinatra on Rails'/'映射

时间:2012-07-07 02:13:26

标签: ruby-on-rails routes sinatra

我可能会遗漏一些东西但是如何在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处理。

2 个答案:

答案 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'