Ruby:从键值对返回值

时间:2018-06-16 01:09:24

标签: ruby

所以我对Ruby很陌生,而且我完全陷入困境。我正在使用属性为url的对象呈现链接。但是,我想测试一个理论,而不是像我想要的那样创建一个不同的URL。我想要做的是查看Argument对象的ID,如果它与指定对象中的键匹配,那么我想改变URL的构造方式。

def perform_redirect(myObj)
  redirects = { 111 => 222, 333 => 444, 555 => 666 }

  if (redirects.has_key? myObj[:id])
    # I'm stuck here, ideal return is:
    return "https://myurl.com/#{redirects.assoc myObj[:id][1]}"
  else
    return myObj[:url]
  end
end

我正在阅读一些关于Ruby数组的东西,它并没有很多意义,或者我应该采用一种完全不同的方式解决这个问题。

预期结果

更改网址

  • 如果myObj = {id: 111, url: "https://somesite.com/111"}
  • myObj.idkey
  • 中的redirects匹配
  • 返回https://myurl.com/222
  • 的新网址

请勿更改网址

  • 如果myObj = {id: 12345, url: "https://somesite.com/12345"}
  • myObj.idkey
  • 中的redirects不符
  • 返回myObj.url
  • https://somesite.com/12345

1 个答案:

答案 0 :(得分:0)

正如@wiesion在评论中提到的那样,没有正确调用所需数据

return "https://myurl.com/#{redirects.assoc myObj[:id][1]}"

需要

https://myurl.com/#{redirects[myObj[:id]]}