我对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})
})...