ruby-on-rails - 在助手中的content_tag中循环并输出content_tags

标签 ruby-on-rails ruby-on-rails-3 helper block

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

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

阅读Using helpers in rails 3 to output 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应该以某种方式在集合模式下工作。

最佳答案

尝试这个:

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

关于ruby-on-rails - 在助手中的content_tag中循环并输出content_tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4669523/

相关文章:

ruby-on-rails - ER 方法 "image_tag"居中?

ruby-on-rails - 获取 fields_for 和 accepts_nested_attributes_for 以处理 belongs_to 关系

ruby-on-rails - Rails : Edit/Update Record, 使用当前记录字段条目填充文本字段

ruby-on-rails - Rails 3::config/initializers 每个环境都有单独的目录

php - Zend View 变量在 View 助手中可用吗?

ruby-on-rails - Rails url helper 不编码&符号

ruby-on-rails - 如何在 rails 作业中访问 rails helper 方法 current_user?

ruby-on-rails - 如何反转转义输出

ruby-on-rails - 如何清理我的 join_table 并删除重复的条目?

ruby-on-rails - 设计路线助手在测试期间不再为人所知