Ruby on rails 葡萄的路线:一个特定的字符串或字符串数组

Ruby on rails 葡萄的路线:一个特定的字符串或字符串数组,ruby-on-rails,ruby,grape,grape-api,Ruby On Rails,Ruby,Grape,Grape Api,我想为Grape gem创建一个路由,以便路由接受字符串数组或具有特定预定义值的单个字符串。从文档中不清楚如何做到这一点 你的建议 更新: 我希望status被传递一个值status1,或者作为一个数组,其中的值可以是任意的和未知的。我把这些结合起来 params do requires :status, type: Symbol, values: [:status1] requires :status, type: Array[String] end 参数只能在params块中声明一

我想为Grape gem创建一个路由,以便路由接受字符串数组或具有特定预定义值的单个字符串。从文档中不清楚如何做到这一点

你的建议

更新:

我希望
status
被传递一个值
status1
,或者作为一个数组,其中的值可以是任意的和未知的。我把这些结合起来

params do
  requires :status, type: Symbol, values: [:status1]
  requires :status, type: Array[String]
end

参数只能在params块中声明一次。如果你申报两次,那么葡萄只会使用一次。在您的情况下,有两种选择可以解决您的问题

第一个选项:声明两个参数并将它们定义为互斥的。这意味着用户只能通知其中一个

params do
  requires :status1, type: Symbol, values: [:status1]
  requires :status2, type: Array[String]
  mutually_exclusive :status1, :status2
end
第二个选项:仅声明一个参数,并将其类型设置为对象。在方法体中,检查它是数组还是字符串。如果是字符串,请验证其值是否正确

params do
  requires :status, type: Object
end
get 'testing' do
    if params[:status].class.name.eql? "Array" then
    elsif params[:status].class.name.eql? "String" then
    end
end

具体点。不清楚你到底想做什么。你想用一种方法处理多条路线吗?@Marlon,我不知道如何解释得更简单。给我们举个例子。在你的问题中加上你已经写过的代码,那是行不通的。或者添加一个代码来说明你想做什么。@Marlon,我认为不需要它。好的。这取决于你。按照你提出问题的方式,我无法理解你的需求,因此我无法帮助你。