Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正确路由路径的语法_Javascript_Ruby On Rails_Nested Routes - Fatal编程技术网

Javascript 正确路由路径的语法

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(已编辑): 玩家控制器

因此,我有一个用于显示播放器的组件,它使用我的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