代码之家  ›  专栏  ›  技术社区  ›  wsfuller

ruby:从键值对返回值

  •  -1
  • wsfuller  · 技术社区  · 6 年前

    所以我对鲁比是全新的,我完全被困住了。我正在渲染与具有以下属性的对象的链接 url . 但是,我想测试一个理论,所以我不想只是渲染url,我想创建一个不同的url。我想做的是查看参数对象的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数组的东西,但是没有什么意义,或者我应该用一种完全不同的方法来解决这个问题。

    预期结果

    更改URL

    • 如果 myObj = {id: 111, url: "https://somesite.com/111"}
    • myObj.id 匹配A key 在里面 redirects
    • 返回的新URL https://myurl.com/222

    不更改URL

    • 如果 myObj = {id: 12345, url: "https://somesite.com/12345"}
    • MyObj.Id 不匹配 钥匙 在里面 重定向
    • 返回 myObj.url 哪个是 https://somesite.com/12345
    1 回复  |  直到 6 年前
        1
  •  0
  •   wsfuller    6 年前

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

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

    需要

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