ruby-on-rails Rails API获取定制方法的参数

mgdq6dx1  于 2023-02-01  发布在  Ruby
关注(0)|答案(1)|浏览(163)

我试图从数据库中过滤一些数据,但它没有得到参数。这是我的方法:

def user_orders
 orders = Order.select { | item | item[:user_id] == params[:id] }
 if orders
  render json: orders, status: :ok
 else
  render json: {error: "No orders available"}
 end
end

这是自定义路由
get "/orders/user/:id", to: "orders#user_orders"
而响应是一个空数组,但是如果我在方法中传入一个数字,如下所示:
orders = Order.select { | item | item[:user_id] == 27 }
我按预期返回了过滤后的数组。如何从路由中传入动态ID?

jobtbby3

jobtbby31#

EDIT:如果参数如下所示:
参数:{ … "order"=>{…"user_id"=>27}}
...则需要以params[:order][:user_id]的形式访问user_id。
否则,您的条件是比较nil27,这将返回false,因此不会选择任何内容。
如果您正在查询一个activerecord模型,我还建议您使用Order.where(item: {user_id: params[:id]})来查找订单列表,这样和rails也可以转换为正确的类型。
rails日志中的这一行写了什么?它应该以GET /user/orders开头,并且应该列出实际接收到的参数。或者,您可以使用puts来检查params的内容。

相关问题