Цикл и вывод content_tags внутри content_tag в помощнике

Я пробую вспомогательный метод, который выводит список элементов, которые будут вызываться следующим образом:

foo_list( ['item_one', link_to( 'item_two', '#' ) ... ] )

Я написал такой помощник после прочтения Использование помощников в рельсах 3 для вывода html :

def foo_list items
    content_tag :ul do
        items.collect {|item| content_tag(:li, item)}
    end
end

Однако в этом случае я просто получаю пустой UL, если я сделаю это в качестве теста:

def foo_list items
    content_tag :ul do
        content_tag(:li, 'foo')
    end
end

я получу UL и LI, как и ожидалось.

Я пробовал поменять местами немного, делая:

def foo_list items
    contents = items.map {|item| content_tag(:li, item)}
    content_tag( :ul, contents )
end

В этом случае я получаю весь список, но теги LI экранированы в HTML (хотя строки безопасны для HTML). Выполнение content_tag (: ul, contents.join ("\ n"). Html_safe) работает, но мне это кажется неправильным, и я считаю, что content_tag должен каким-то образом работать в блочном режиме с коллекцией .

29
задан Community 23 May 2017 в 10:30
поделиться