结合react路由器前缀与rails路由-导致路由错误?



我对ruby on rails和react有点陌生。我有一个问题,使补丁请求从我的react.js前端到我的ruby on rails后端。来自我的路由的路径以某种方式添加到我的rails路由,从而导致如下路由错误:

Started PATCH "/edit/api/organizations/1" for 127.0.0.1 at 2022-06-06 21:06:34 -0500

ActionController::RoutingError (No route matches [PATCH] "/edit/api/organizations/1"):

我的路线应该是api/organizations/1,前面没有edit。这似乎与我的路由器有关,因为我已经创建了这个路由:

<Route exact path='/edit/:id' element={<EditOrganization  selectedOrg={selectedOrg}selectOrg={selectOrg} user={user} />}></Route>

我在React中的fetch请求:

fetch(`api/organizations/${selectedOrg.id}`, {
method: "PATCH",
headers: {
"Content-Type" : "application/json"
}, 
body: JSON.stringify({name, hourly_rate: hourlyRate})
})...

我还创建了一个回退控制器,我认为这将解决路由器和rails路由之间的一些冲突,也许我没有正确地做。在我的routes.rb文件中,我已将此添加为最后一条路由。

get "*path", to: "fallback#index", constraints: ->(req) { !req.xhr? && req.format.html? }

app/controllers/fallback_controller.rb

class FallbackController < ActionController::Base
def index
render file: 'public/index.html'
end
end

也许我错了,我的问题可能有点令人困惑。但我想试试。任何帮助都将非常感激:)

我在PATCH请求之前缺少/。它需要/被识别为一个相对路径。

fetch(`/api/organizations/${selectedOrg.id}`, {
method: "PATCH",
headers: {
"Content-Type" : "application/json"
}, 
body: JSON.stringify({name, hourly_rate: hourlyRate})
})... 

最新更新