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
相关产品推荐
相关产品推荐

