相关疑难解决方法(0)

在helper中的content_tag内循环并输出content_tags

我正在尝试一个帮助方法,它将输出一个项目列表,如下所示:

foo_list( ['item_one', link_to( 'item_two', '#' ) ... ] )
Run Code Online (Sandbox Code Playgroud)

我在阅读了使用rails 3中的helper输出html之后,就像这样编写了帮助器:

def foo_list items
    content_tag :ul do
        items.collect {|item| content_tag(:li, item)}
    end
end
Run Code Online (Sandbox Code Playgroud)

但是,如果我这样做,我只是在这种情况下得到一个空的UL:

def foo_list items
    content_tag :ul do
        content_tag(:li, 'foo')
    end
end
Run Code Online (Sandbox Code Playgroud)

我按预期获得了UL和LI.

我已经尝试过将它交换一下:

def foo_list items
    contents = items.map {|item| content_tag(:li, item)}
    content_tag( :ul, contents )
end
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到整个列表,但LI标签是html转义(即使字符串是HTML安全).做的content_tag(:ul, contents.join("\n").html_safe )工作,但我感觉不对,我觉得content_tag应该以块模式与集合以某种方式工作.

ruby-on-rails block helper ruby-on-rails-3

29
推荐指数
3
解决办法
2万
查看次数

标签 统计

block ×1

helper ×1

ruby-on-rails ×1

ruby-on-rails-3 ×1