Для справки, вот определение concat, с которым вы сталкиваетесь при выполнении этого кода (из actionpack / lib / action_view / helpers / tag_helper.rb).

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

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 должен работать в режиме блока с коллекцией как-то.

Ответы на вопрос(5)

Ваш ответ на вопрос