2013-02-04 113 views
-1

,我有以下如果一個lib方法else語句:的Ruby/Rails的if/else case語句

begin 
    url     = URI.parse("url"+ product) 
    @response   = JSON.parse(Net::HTTP.get_response(url).body) 
    url2     = URI.parse("url" + product) 
    @response1   = JSON.parse(Net::HTTP.get_response(url2).body) 

    if @response != nil 
     @url     = @response["product"]["url"] 
     image_url1   = @response["product"]["image_url"] 
     @title    = @response["product"]["title"] 

    else 
     @url     = @response1["ProductUrl"] 
     @image_url   = @response1["ImagePath"] 
     @title    = @response1["ProductName"] 
    end 
    rescue 
    next 
end 

目前這種方法只檢查URL和@應答,並且簡單地跳過如果@應答=零。如何檢查@response是否爲零,如果是,請使用url2和@ response1並保存從該響應返回的變量。如果@response不爲零,請保存@respoonse返回的變量。

@應答和@響應1是不同的API

+1

'URI.parse(「網址+產品)'你似乎有一個語法錯誤... –

+0

哎呀,固定的,謝謝! – Yogzzz

+0

什麼的URL和url2和@應答和@響應1? – Andy

回答

2

我想這是你想要的。關鍵是要檢查零,使用@ response.nil?另一個問題是,看到的是,如果它第一次失敗,你會得到相同的網址 - 不知道爲什麼你會再次要求相同的網址,並且如果第一次失敗,就會以不同的方式處理它。

begin 
    url = URI.parse("url+ product) 
    @response = JSON.parse(Net::HTTP.get_response(url).body) 

    if [email protected]? 
    @url = @response["product"]["walmart_canonical_url"] 
    @image_url = @response["product"]["image_url"] 
    @title = @response["product"]["title"] 
    else 
    url = URI.parse("url" + product) 
    @response = JSON.parse(Net::HTTP.get_response(url2).body) 
    @url = @response["ProductUrl"] 
    @image_url = @response["ImagePath"] 
    @title = @response["ProductName"] 
    end 

rescue 
    next 
end