Sinatra和客户端路由

时间:2016-09-13 08:03:52

标签: ruby reactjs sinatra react-router rack

我有一个简单的应用程序(服务器端是Sinatra,客户端是ReactJS)。

工作流程非常基础:Sinatra处理get "/"请求,并使用静态样式表和脚本向客户端发送index.html

脚本是ReactJS应用程序,它由几个组件和一个ReactRouter组成。每个React的组件都是一个独特的“页面”,根据ReactRouter有自己的路径/路径。

例如:

  • "/" => "index.html" (real html page with renered components inside)
  • "/form" => (ReactRouter points to component <Form/>, in fact render happens inside selector of "index.html")
  • "/finish" => (ReactRouter points to component <Finish/>, in fact render happens inside selector of "index.html")

虽然我只是在实施客户端,但它的效果非常好。但是现在,当我尝试使用Sinatra作为服务器端的东西时,这已经破了:当我想去/form时我得到了Sinatra的默认404页面(“Sinatra不知道这个小曲。”)

我理解Sinatra(或Rack)在ReactRouter之前拦截请求的路径(/form的{​​{1}})。但我无法理解如何解决它(为什么会这样,虽然路由器脚本已经在客户端上并且应该首先触发)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用通配符路由将index.html返回到所有路由。

这样的事情:

get '/*' do
  #return index.html
end