我试图从数据库中过滤一些数据,但它没有得到参数。这是我的方法:
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?
1条答案
按热度按时间jobtbby31#
EDIT:如果参数如下所示:
参数:
{ … "order"=>{…"user_id"=>27}}
...则需要以
params[:order][:user_id]
的形式访问user_id。否则,您的条件是比较
nil
和27
,这将返回false,因此不会选择任何内容。如果您正在查询一个activerecord模型,我还建议您使用
Order.where(item: {user_id: params[:id]})
来查找订单列表,这样和rails也可以转换为正确的类型。rails日志中的这一行写了什么?它应该以
GET /user/orders
开头,并且应该列出实际接收到的参数。或者,您可以使用puts来检查params的内容。