Javascript 正确路由路径的语法
因此,我有一个用于显示播放器的组件,它使用我的displayPlayerObject函数。问题是我没有在函数中获取和在routes.rb中发布的正确路径。模型关系具有属于团队的玩家,获取玩家的路径为“1”,前者为团队id,后者为玩家id。但是如何使displayPlayerObject以同样的语法方式工作呢?routes.rb中的帖子应该是什么样子?我还怀疑我的球员控制员的“表演”也是错误的 displayPlayerObject函数(已编辑): My routes.rb(已编辑): 玩家控制器显示(已编辑):Javascript 正确路由路径的语法,javascript,ruby-on-rails,nested-routes,Javascript,Ruby On Rails,Nested Routes,因此,我有一个用于显示播放器的组件,它使用我的displayPlayerObject函数。问题是我没有在函数中获取和在routes.rb中发布的正确路径。模型关系具有属于团队的玩家,获取玩家的路径为“1”,前者为团队id,后者为玩家id。但是如何使displayPlayerObject以同样的语法方式工作呢?routes.rb中的帖子应该是什么样子?我还怀疑我的球员控制员的“表演”也是错误的 displayPlayerObject函数(已编辑): My routes.rb(已编辑): 玩家控制器
让我们让它看起来更好 首先,
Player.find_by(id:params[:id])
毫无意义,因为find_by(id:params[:id])
等于其中(id:params[:id])。取。最好将其替换为经典的find(params[:id])
,这样看起来更好
你的主要问题是什么?用displayObject
命名POST
有什么意义。对我来说,展示一些东西意味着把它交给我。如果你想得到一些球员,你需要调用api/teams/:team\u id/players/:id
。但如果你想创建新玩家,你需要向/api/teams/:team_id/players
路线发出POST请求
p.S.1只需将请求方法从POST
更改为GET
。然后再加上你的承诺:
。然后(res=>{
console.log(res)
})
并观察服务器返回的内容
p.S.2变更请求至
fetch(`/api/teams/:team\u id/players/:id`)
在控制器中,通过:id
确定我添加了已编辑的控制器、路由和显示播放器对象和终端,没有显示任何问题,但当我单击播放器卡时,它没有正确显示。也许我的反应组件和容器有问题?你碰巧知道“反应”“重复”吗?我已经改变了答案。将POST更改为GET并添加console.log以保证检查服务器返回的内容当我更改请求方法以获取时,我收到错误“未处理的拒绝(TypeError):无法在“窗口”上执行“获取”:使用GET/HEAD方法的请求不能有正文”。这是因为“body:JSON.stringify(data)”和其他人说用POST代替。你在body中发送了什么数据?data=所选玩家的id
export const displayPlayerObject = (id, teamId, type) => {
return dispatch => {
const data = { id };
fetch(`/api/teams/:team_id/players/show`, {
method: 'post',
headers: {
"Content-Type": "application/json",
Accept: "application/json",
},
body: JSON.stringify(data)
})
.then(res => res.json())
.then(responseJSON => { dispatch({ type , player_object: responseJSON})
})
}
};
Rails.application.routes.draw do
scope '/api' do
post "teams/show", to: 'teams#show'
post "teams/:team_id/players/show", to: 'players#show'
resources :teams do
resources :players
resources :star_players
end
end
end
def show
Player.find(params[:id])
render json: @player, status: 200
end