如何从 Rails 中的数组中解构一个 id

How to destructure an id out of an array in Rails

我正在从 Redis 取回一个数组(通过我的项目的控制器),我需要在我的产品视图中对其进行解构。

数组(显示 2 个结果,但还可以更多): ["project-5", "project-4"]

数字 (5, 4) 是我的项目 ID (@project.id),我需要减去它才能在 .each do 函数中使用。

我能找到的所有内容都是多变量的解构解决方案。但是这里我只有1个变量。

谁能帮我解决如何从这个数组中分离出产品 ID 的问题?

您可以使用 match 方法在正则表达式的帮助下获取 ID。假设 array 由带有 id-s 344 的项目组成,那么一行将是:

2.0.0-p353 :091 > array.map{|el| el.match(/\d+$/)[0]}
  => ["3", "44"] 

如果您确实需要使用 .each do 那么

array.each do |el|
  el.match(/\d+$/)[0]
end

您还可以使用带有正则表达式的方法 gsub 将除 id 内部字符串之外的所有内容替换为空字符串,因此仅保留字符串的 id 部分。 一行 (array = ["proj3ct-3", "project-1567"]):

2.0.0-p353 :040 > array.map {|el| el.gsub(/(.*\-)[^\d]*/, "")}
  => ["3", "1567"]

.each do 类似于前面 match 的示例。

编辑: 如果您希望 do-block 到 return 已经格式化的数组,那么您应该使用 bang-method 来自gsub 像这样: el.gsub!(/(.*\-)[^\d]*/, "") 这也会对元素进行更改。仅限非 bang 方法 return 更改值而不改变它们。

以防万一您不知道并且想 test/analyze 您的正则表达式然后 this is a good place to do it- I've been using it for quite a while. Also a good place to recheck some basics is here