2015-07-12 166 views
2

我是新來的鐵軌(但作爲我的工作每天使用PHP)。我無法獲得散列值。 在我的控制,我有以下:訪問軌道上的紅寶石中的數組哈希值

@artists = RSpotify::Artist.search(params[:q]) 

這對於運行任何查詢傳遞給它包含藝術家的搜索。因此,搜索'Ozzy'會返回Ozzy的結果。 在我看來,我正在運行以下代碼,它循環輸出圖像的名稱和第一個值。

<%= @artists.each do |artist| %> 
    <%= artist.name %><br /> 
    <%= a = artist.images.first %><br /> 
<% end %> 

artist.images.first的輸出是:

{"height"=>640, "url"=>"https://i.scdn.co/image/0f9515867c122afc298e626c10afbb189165e4f5", 
"width"=>640} 

我想要做的就是訪問URL的一部分,所以我可以爲源,但我把它添加到圖像標記努力做到這一點。 這絕對是一個哈希 - 運行以下證明了這一點。 artist.images.first.class 運行這會導致一個錯誤(未定義的方法'[]'nil:NilClass),我不知道我在做什麼錯誤。 artist.images.first [:url]

任何幫助,將不勝感激。

回答

0

您可以撥打:

artist.images.first.try(:fetch, "url") 

它將返回URL或零如果images.first是零。注意它會增加

KeyError: key not found: "url" 

如果images.first是散列但沒有url密鑰。 在這種情況下,您還可以提供默認網址:

artist.images.first.try(:fetch, "url", "/default_image.jpg") 
+0

非常感謝!嘗試它,並按預期工作! – keeps21

+0

太棒了。你能將線程標記爲回答嗎? – ddgd

+0

請注意,這似乎是一個Rails的東西。這不是Ruby的一部分。 (不幸。) –