2016-09-06 33 views
2

是否有Ruby(最好)或Rails方法來檢查數組的第二個索引是否存在?如何使用Ruby和/或Rails檢查數組索引是否存在

在我的Rails(4.2.6)應用我在我的視圖下面的代碼,顯示了前兩個縮略圖的照片的數組:

<% if array.photos.any? %> 
    <%= image_tag array.photos.first.image.url(:thumb) %> 
    <%= image_tag array.photos[1].image.url(:thumb) %> 
<% end %> 

然而如果在陣列中沒有第二項,然後有一個錯誤

我已經試過以下if語句使第二縮略圖有條件的渲染,但他們不工作:

<% if array.photos.include?(1) %> 
<% if array.photos.second? %> 
<% if array.photos[1]? %> 
<% if array.photos[1].any? %> 

我想另一種方法來得到我想要的只是檢查數組的長度

我還在想,如果Ruby(或Rails)有一種方法或方法來檢查數組中是否存在特定的索引或不。在此先感謝

編輯:爲了澄清我只是想表明陣列中的前兩個縮略圖,如果有的話

+1

Wenceslao的回答是好。關鍵在於,在Ruby中,可以安全地訪問數組超出其概念大小。例如,對於數組'a = [1]',您可以檢查一個索引,如果沒有任何內容,它將返回'nil'。所以'array.photos [1] .nil?'是決定是否有任何東西的最簡單的方法。 – jaydel

回答

6

您可以使用。每次,但如果你想要遵循這種方法。 取而代之的是:

<%= image_tag array.photos[1].image.url(:thumb) %> 

也許你可以使用這個:

<%= if(!array.photos[1].nil?) image_tag array.photos[1].image.url(:thumb) %> 
+0

謝謝,'!array.photos [1] .nil?'方法是我在尋找的 – Ren

+0

,但是我在行尾使用了不同的'if'子句的語法 – Ren

0

在這裏,爲什麼不

(0...array.photos.size).each do |photo| 
    ...... 
end 

array.photos.each do |photo| 
    ...... 
end 
+0

,因爲他試圖訪問他不知道的特定索引將被佔用。 – jaydel

相關問題