You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS通过RTK Query向Rails传数组为何显示为_json而非roles?

问题原因与解决办法

原因

Rails 后端解析 JSON 请求时,若请求体是纯数组(而非键值对结构的对象),会自动将数组存入 _json 参数中。你当前通过 RTK Query 发送的 data 是纯数组 [1,2,3],没有用 roles 作为顶层键包裹,所以后端无法直接拿到 roles 字段。

解决办法

方法1:修改前端请求体结构(推荐)

将请求的 data 改为包含 roles 键的对象,让请求体符合常规的 JSON 格式:

updateUserRol: builder.mutation({
  query: ({ userId, id, data }) => ({ // data是[1,2,3]
    url: `${url}/${id}/users/${userId}`,
    method: 'PUT',
    data: { roles: data } // 用roles键包裹数组
  }),
}),

此时后端就能通过 params[:roles] 获取到数组 [1,2,3]。

方法2:直接读取后端的_json参数(不推荐)

如果一定要保持纯数组的请求体,后端可以直接读取 _json 参数:

def update
  roles = params[:_json]
  p 777166666, roles # 输出[1,2,3]
end

但这种方式不符合 RESTful API 的常规设计,建议优先使用方法1。

内容的提问来源于stack exchange,提问作者what l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 09:13:13