Как избежать повторяющихся записей во вложенной итерации - PullRequest
0 голосов
/ 27 сентября 2011

Как мне переписать это, чтобы избежать повторяющихся записей?

images.each do |img|
  thumbs.each do |th|
    html << link_to(image_tag("#{th.url}"), "#{img.url}")
  end
end

Я хочу обернуть миниатюры th.url в ссылки на исходные изображения img.url

up:
Я использую гем fog для получения images и thumbs из S3.
Это файлы с разными префиксами: storage.directories.get(bucket, :prefix => "thumbs").files

Ответы [ 2 ]

1 голос
/ 27 сентября 2011

Почему бы не связать ваши изображения и эскизы каким-либо образом?

Так что, если ваше изображение называется image_name.jpg, вы можете иметь миниатюру с именем thumbs/image_name.jpg.

Если ваши имена не связаны, тогда почему бы просто не связать их в своем приложении, чтобы использовать ассоциативный массив изображений и имен миниатюр?

my_images = [ "image_1.jpg"=>"aflafffff_thumb.jpg", "image_2.jpg"->"zofofroro_thumb.jpg" ] 

Любой из этих способов позволяет просто найти соответствующий эскиз для каждого изображения.

0 голосов
/ 27 сентября 2011

Вы просматриваете две коллекции (изображения и превью) - отсюда дубликаты. Предположение, что ваше изображение и большой палец как-то связаны между собой ...

например. доступны большие пальцы, что-то вроде image.thumb

images.each do |image|
  html << link_to(image_tag(image.thumb.url), image.url)
end

Повторяя только коллекцию изображений, вы не получите дубликаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...