2016-09-13 10 views
0

私は単純なアプリケーションを持っています(サーバー側はSinatra、クライアント側はReactJSです)。Sinatraとクライアント側のルーティング

ワークフローは非常に基本的です:Sinatraはget "/"リクエストを処理し、index.htmlを静的スタイルシートとスクリプトでクライアントに送信します。

スクリプトは、いくつかのコンポーネントとReactRouterで構成されるReactJSアプリです。各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はこのdittyを知らない」)。

Sinatra(またはRack)がReactRouterの前に要求のパス(/form/finish)を傍受することを理解します。しかし、私はそれを修正する方法を理解することができません(なぜルータスクリプトがすでにクライアント上にあり、最初に起動しなければならないのですか)。

ありがとうございました。

答えて

1

ワイルドカードルートを使用して、index.htmlをすべてのルートに戻します。このような

何か:

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

ありがとう!私には恥ずかしい、それはかなり明白だった) – RedZagogulin

関連する問題