2016-09-06 1 views
2

배열의 두 번째 인덱스가 있는지 확인하는 Ruby (선호) 또는 Rails 방법이 있습니까? 내 레일에서Ruby 및/또는 Rails를 사용하여 배열 인덱스가 존재하는지 확인하는 방법

(4.2.6) 응용 프로그램 I이 사진의 배열의 처음 두 개의 작은 이미지를 보여줍니다 내보기에 다음 코드 :

그러나
<% 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 (또는 레일스)에 배열의 특정 인덱스가 있는지 확인하는 방법이나 방법이 있는지 궁금합니다. 아닙니다. 미리 감사드립니다

편집 : 난 그냥, 배열의 첫 번째 두 개의 썸네일을 표시 할 명확히하기 위해 어떤

+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 
당신은 .each를 사용할 수 있습니다
+0

그는 그가 모르는 특정 색인에 액세스하려고하기 때문에 점령됩니다. – jaydel

관련 문제