Ruby on rails 为什么'/';与我的Rails 3应用程序中的机架应用程序正确匹配,但没有其他路径可以匹配?

Ruby on rails 为什么'/';与我的Rails 3应用程序中的机架应用程序正确匹配,但没有其他路径可以匹配?,ruby-on-rails,ruby,routing,Ruby On Rails,Ruby,Routing,我使用的是Rails 3.0.6 在我的lib目录中,我有一个示例_app.rb,它只是一个Sinatra应用程序: class ExampleApp < Sinatra::Base get '/' do "Hello from Sinatra" end end 当我运行rails服务器(Webrick)时,这很匹配。但是,如果我尝试: match "/example" => ExampleApp 访问localhost:3000/example时出现“无路由匹配

我使用的是Rails 3.0.6

在我的lib目录中,我有一个示例_app.rb,它只是一个Sinatra应用程序:

class ExampleApp < Sinatra::Base
  get '/' do
    "Hello from Sinatra"
  end
end
当我运行rails服务器(Webrick)时,这很匹配。但是,如果我尝试:

match "/example" => ExampleApp
访问localhost:3000/example时出现“无路由匹配”//example”错误。运行rake routes会显示以下路线:

example  /example(.:format) {:to=>ExampleApp}
如果我尝试将“/example”与控制器操作相匹配,它可以正常工作,但与上面的Sinatra应用程序不匹配,因此我不确定发生了什么。我知道在Rails站点上的路由文档中没有找到一些我遗漏的小东西


感谢您的帮助。

问题在于,您的Sinatra应用程序只响应向
/
发出的请求。您需要添加

get '/example'
或者使用
*

get '*' do
  "Hello from Sinatra"
end

如果我将Sinatra路由更改为匹配的“/example”,则仍然会出现“无路由匹配”错误。此外,这似乎与我在博客上读到的一篇文章相冲突,在Rails 3路线中使用的“/home”作为示例应该与简单使用“/”路线的Sinatra应用程序很好地匹配。我刚刚创建了一个新应用程序,并尝试了这个。耶胡达的例子似乎不起作用(可能是他这方面的错误),但当我在
MyApp
中匹配“/example”,“to=>MyApp”和
get'/example'
时,我得到了一个有效的响应。你能确定你做得对吗?我使用Rails 3.0.6和Sinatra 1.2.2进行了测试。好的,在创建了另一个应用程序之后,我现在使用您的示例使其正常工作。用我的原始示例my bad重新启动Webrick可能非常简单。非常感谢。
get '*' do
  "Hello from Sinatra"
end