【问题标题】:ROR passing array as parameterROR 传递数组作为参数
【发布时间】:2026-02-11 10:55:02
【问题描述】:

我正在尝试将数组作为参数传递给我的控制器方法,但它对我不起作用。我尝试了以下方式:

http://localhost:3000/med?med_ids=[2,1]

我也尝试了以下方式,它对我有用。我只是想知道任何好的解决方案

http://localhost:3000/manufacturer/1/medicines?medicine_id[]=2&medicine_id[]=1

内部控制器:

@val = params[:medicine_id]

值来了,但我想把它做成数组。

需要帮助。谢谢。

【问题讨论】:

  • 你在params[:medicine_id]得到什么
  • 你可以 JSON 编码你的数组,然后从你的控制器解析它
  • 我得到的是字符串
  • 试试:?medicine_id%5B%5D=2&medicine_id%5B%5D=1
  • 如果我正确阅读了问题,?medicine_id[]=2&medicine_id[]=1 正在为您工作。这是在查询字符串中传递数组的正确方法

标签: ruby-on-rails arrays parameter-passing


【解决方案1】:

你不能像这样从查询字符串中获取数组:

?med_ids=[2,1]

如果你想在查询字符串中传递一个数组,你需要按如下方式传递它(正如你在问题中提到的那样):

?medicine_id[]=2&medicine_id[]=1

作为对您问题的回答:第二种方法绝对是好方法和正确方法。随它去吧。

【讨论】:

    【解决方案2】:

    如果您尝试发送类似 [1,2] 的参数,那么在您的控制器中您会得到类似“[1,2]”的信息,

    并且您需要解析获取原始数组,例如: JSON.parse "[1,2]"

    ans: [1,2] 和类数组

    【讨论】:

      【解决方案3】:

      您可以选择构建控制器来解析分隔数组:

      ?medicine_ids=1,2
      

      控制器:

      medicine_ids = params[:medicine_ids].split(',')
      

      【讨论】: