Ruby Rails 助手打印出奇怪的东西

Ruby on Rails helper prints out odd stuff

我想创建一个助手,它遍历用户社区列表并创建与可用社区数量一样多的缩略图。所以我创建了这两个辅助方法

def print_admined_group_thumbs
    @user_groups_hash[:admined_groups].each {
        |group_hash|

        name            = group_hash[:name]
        group_id        = group_hash[:group_id]
        photo           = group_hash[:photo]
        members_count   = group_hash[:members_count].to_i

        concat(get_group_thumbnail_html(group_id, name, members_count, photo))
    }
end


# creates a small preview for the selected comunity group
def get_group_thumbnail_html(group_id, name, members_count, photo)
    content_tag(:div, :class => "col-md-55") do
       concat(content_tag( :div, :class => 'thumbnail') do
            concat(content_tag(:div, :class => 'image view view-first') do
                concat(image_tag(photo, :class => "group_thumb_image"))
                concat(content_tag(:div, :class => "mask") do
                    concat(content_tag :p, "Your text")  
                    concat(content_tag(:div, :class => "tools tools-bottom") do

                    end)    
                end)
                concat(content_tag(:div, :class => "caption") do
                    concat(content_tag(:p, name))
                end)
            end)
       end)
    end
end #end get_group_thumbnail_html 

所以我只是将此调用添加到我的视图中

<%= print_admined_group_thumbs %>

除了一件事,一切都几乎正常,并按照我的意愿创建了所有缩略图。它还会在缩略图之后打印出 "group_hash" 变量的全部内容。也许我今天太累了,但我似乎无法弄清楚为什么?如果有人帮助我解决这个问题并解释我做错了什么,我将不胜感激?

@some_hash.each {} 自动 return 散列完成后。因此,您的函数 print_admined_group_thumbs() 将您的缩略图添加到模板并 return 散列。

问题出在这里:

<%= print_admined_group_thumbs %>

= 的意思是“取 returned 的任何值并将其添加到模板中。因此,在将缩略图打印到模板后,您不小心将散列添加到了模板中。您可以通过删除 =:

轻松修复它
<% print_admined_group_thumbs %>

这告诉 rails 到 运行 函数而不将其 return 值添加到模板。