Rails で react-router を使う場合の設定
現在、Rails をバックエンドにしたSPAを作ろうと考えています。
ログインすると入れる、 /user
以下の画面を react-router
の browserHistory を使って制御させたいと思っています。
つまり、 /user/hoge
にアクセスしても /user/fuga
にアクセスしても Rails が実行するアクションは常に同じで、描画はクライアント側でReactを使ってしたいと考えています。
いろいろ探していると、
/user/hoge と /user/fuga のアクションをコントローラーに定義してどちらも同じビューを使う方法を見つけました。
参考: https://github.com/sugyan/react-router-scaffold
確かにこれなら react-router
が URL を変えたとしても、リロード可能です。
でも、これって少し冗長じゃないでしょうか。
クライアントサイドでルートを増やしたらサーバーサイドでも同じルートを設定する必要があります。
なので、 react-router
で解説されているようなことが、 nginx
でできないかやってみました。
参考: https://github.com/reactjs/react-router/blob/master/docs/guides/Histories.md#configuring-your-server
location /user/ {
try_files $uri /user;
}
いろいろ試行錯誤して、こんな風に書くと、希望通りの動きをしました。
と、いうところまで来て、nginx
を使ってまでやることなのか、という疑問が湧いてきましたのでここで質問させてもらいます。
Rails では /user
以下はどんなリクエストが来ても 404 を出さず規定のアクションを実行する、ようなルート設定はできないのでしょうか?
あるいは、できるような gem が存在するのでしょうか?