Ruby on rails Rails 5.1+;Webpacker&x2B;反应路由器

Ruby on rails Rails 5.1+;Webpacker&x2B;反应路由器,ruby-on-rails,webpack,react-router,webpacker,Ruby On Rails,Webpack,React Router,Webpacker,我正在尝试在一个新项目中使用这三种方法。 我想使用react路由器处理路由 使用“开箱即用”设置,当我从例如localhost:3000/开始,然后单击例如链接路由到注册页面时,它工作正常。但是当我尝试输入localhost:3000/signup时,它说没有路由(因为没有使用Rails创建的路由) 我如何才能整合这一点 您可以通过使用react router dom和HashRouter而不是BrowserRouter来实现这一点。处理这种情况的正确解决方案是在Rails config/rou

我正在尝试在一个新项目中使用这三种方法。 我想使用
react路由器
处理路由

使用“开箱即用”设置,当我从例如
localhost:3000/
开始,然后单击例如
链接
路由到
注册
页面时,它工作正常。但是当我尝试输入
localhost:3000/signup
时,它说没有路由(因为没有使用Rails创建的路由)


我如何才能整合这一点

您可以通过使用
react router dom
HashRouter
而不是
BrowserRouter
来实现这一点。处理这种情况的正确解决方案是在Rails config/routes.rb文件中定义所有react路由

问题是Rails必须知道React正在处理的路由,否则它会试图接管并处理应用程序的路由

因此,假设您的React的前端控制器路径是:
root'pages#index'
,在config/routes.rb中如下所示:

Rails.application.routes.draw do
    root 'pages#index'
end
因此,要使您的React路由正常工作,而又不受Rails的干扰,您可以这样做:

Rails.application.routes.draw do
    root 'pages#index'
    get 'admin', to: 'pages#index'
    get 'admin/dashboard', to: 'pages#index'
    get 'admin/user', to: 'pages#index'
end
您只需将所有反应路由重定向到前端控制器“页面#索引”。那就行了