Рендеринг HAML из Rails Helper Внутри цикла / итерации - PullRequest
2 голосов
/ 08 марта 2012

У меня есть следующий код внутри помощника в рельсах:

def custom_options_tag(opts={})
  ['am', 'pm'].each do |meridian|
    ["12", "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11"].each do |time|
      if @event.send(opts[:method], opts[:arg]) == time.to_s + meridian
        engine = Haml::Engine.new("%option{:value => human_time, :selected => 'selected'}= human_time")
      else
        engine = Haml::Engine.new("%option{:value => human_time}= human_time")
      end
      engine.render(Object.new, :human_time => time.to_s + meridian)
    end
  end
end

Мой вопрос ... Как этот код может быть отображен на мой взгляд?Кажется, что нет способа визуализировать код haml, который прошел цикл внутри вспомогательного метода.

Чтобы упростить то, что я пытался отрисовать абзац 3 раза ...

def some_paragraph_helper
  3.times do
    engine = Haml::Engine.new("%p Some paragraph from helper")
    engine.render
  end
end

Когда я вызываю метод ...

some_paragraph_helper

... он выводит не текст, а просто число «3» без тега абзаца.Обратите внимание, что он показывает число «3» только один раз ... как если бы он не проходил через цикл.

Спасибо за помощь.

LP

1 Ответ

4 голосов
/ 08 марта 2012

Вам необходимо вернуть результат engine.render

def some_paragraph_helper
  result = ""
  3.times do
    engine = Haml::Engine.new("%p Some paragraph from helper")
    result << engine.render
  end
  result
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...