不要将React用于路由请求

时间:2018-07-17 02:57:17

标签: ruby-on-rails reactjs

我只有一个页面React,网站的其余部分(当前)是Rails

React页具有一条路由,不需要任何其他路由。

我想将路由请求发送回Rails服务器,而不是由React接收。当前,您可以按预期使用Rails页,直到进入React页为止,此时无论URL如何,您都无法退出React页。

构建React页后,该构建将移至Rails应用程序中的公用文件夹。我使用控制器操作通过渲染公用文件夹中的索引页来调用React页。

Controller
  def react_index_html
    render file: 'public/index.html'
  end

Route
  get '/trade', to: "react#react_index_html", constraints: ->(request) do
    !request.xhr? && request.format.html?
  end

让我知道是否需要提供更多信息来帮助您。我在网上广泛搜索了答案,但是我的搜索组合返回了有关react-router并在React页面内进行路由的信息,但找不到与我想做的事情有关的任何事情。

***澄清:react页面托管在/ trade上,基本上任何不包含/ trade的路径名都应该通过rails路由,而不是react。

1 个答案:

答案 0 :(得分:0)

事实证明,我犯的错误是我将页面托管在public文件夹中,而不是public / trade文件夹中,并且将主页变量设置在

的package.json文件中
"homepage": "www.publicurl.com/trade"

在我的rails项目根目录的package.json文件中,

"build": "cd react-client && npm install && npm run build && cd ..",
"deploy": "cp -a react-client/build/. public/",
"postinstall": "npm run build && npm run deploy && echo 'Client built!'"

我将其更改为:

"build": "cd react-client && npm install && npm run build && cd ..",
"deploy": "mkdir public/trade && cp -a react-client/build/. public/trade/",
"postinstall": "npm run build && npm run deploy && echo 'Client built!'"

这是骗人的,现在所有不是“ / trade”的URL都通过rails路由器进行路由。