Rails 5 API控制器未收到前端应用程序发送的参数

时间:2019-03-03 23:23:19

标签: ruby reactjs request rails-api ruby-on-rails-5.2

我正在使用前端的React和后端的Rails 5创建一个新的分布式应用程序。我是Rails的新手,所以我无法为遇到的问题找到解决方案。

问题在于,Rails控制器中的params var不包括React前端在POST请求中发送的变量。

它给我以下错误:

  

ActionController :: ParameterMissing(缺少参数或值为   空:用户):

这是在Rails控制器中由以下行生成的:

params.require(:user).permit(:name, :cnpj, :email)

这是fetch发出的POST请求的正文(参数):

user: {
  cnpj: '1231412',
  email: 'henio@hen.io',
  name: 'henio'
}

与前端相关的代码:

export const post = async (resource, data) => {
  try{
    const url = `${apiBase}/${resource}`;
    const response = await fetch(url, {
      method: 'POST',
      mode: 'cors',
      cache: 'no-cache',
      headers: {
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(data),
    });
    if (!response.ok) return false;
    return await response.json();
  }catch(e){
    console.log(e);
    return false;
  }
}

const res = await post(apiResourse,{ user, });

这是在控制器内部的user_params方法中打印的params对象:

{"controller"=>"api/v1/users", "action"=>"create"}

那是什么意思?

1 个答案:

答案 0 :(得分:0)

按照以下问题的公认答案中的说明解决此问题: Rails CORS issue with Ajax API endpoint Request