цикл () тег изображения - PullRequest
       2

цикл () тег изображения

0 голосов
/ 28 марта 2012

Я хочу показать другую версию изображения:

первая статья: большой баннер

секунда: маленький баннер, плавающий вправо / влево

Итак, во-первых: используйте цикл (), но не работайте:

= cycle(image_tag(banner_big), image_tag(banner_small)

или

= image_tag(cycle(banner_big_path, banner_small_path))

Отображается только первое изображение

Есть правильный способ сделать такого?

Ответы [ 2 ]

2 голосов
/ 28 марта 2012

Ваша проблема в том, что rails ожидает, что вы будете каждый раз вызывать цикл с одним и тем же набором строк. В данный момент вы передаете разные пары строк каждому вызову цикла, поэтому rails сбрасывает цикл каждый раз. Новые циклы всегда начинаются с их первого значения, отсюда и результат, который вы описываете.

Предполагается, что в ваших статьях есть методы, называемые small_path, big_path, что-то вроде

article.send(cycle("big_path","small_path"))

Должен возвращать альтернативные пути к изображениям.

0 голосов
/ 28 марта 2012

Вы можете использовать средство session для хранения там индексов и их использования. Например:

# application_helper.rb
def session_banner_index
  session[:banner_index] || 0
end

def session_banner(*list)
  list[session_banner_index % list.length]
end

# application_controller.rb
def increment_session_banner_index!
  session[:banner_index] = (session[:banner_index] || 0) + 1
end

Эти вспомогательные методы приближают интерфейс, который вы запрашивали:

 = image_tag(session_banner(banner_big, banner_small))
...