使用.each重构查看装饰器的代码

时间:2013-11-17 21:33:57

标签: ruby-on-rails draper

我正在学习如何使用draper gem将视图代码移动到装饰器中。我无法弄清楚如何将它们移动到装饰器中。

<% @project.users.each do |p| %>
    <small class="btn btn-mini">
        <%= link_to "#{p.first_name} #{p.last_name}", "mailto:#{p.email}" %>
    </small>
    <br>
<% end %>

我尝试了以下内容:

查看代码:

<%= @project.assigned_users %>

装饰员代码:

def assigned_users
    model.users.each do |p|
        h.content_tag :small, class: 'btn btn-mini' do
            h.link_to "#{p.first_name} #{p.last_name}", "mailto:#{p.email}"
        end
    end
end

结果是整个用户哈希,而不是我正在寻找的first_name last_name按钮。也许.each不属于装饰者?任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

each返回原始哈希值。您需要改为阻止块的结果:

def assigned_users
    model.users.map do |p|
        h.content_tag :small, class: 'btn btn-mini' do
            h.link_to "#{p.first_name} #{p.last_name}", "mailto:#{p.email}"
        end
    end.flatten.join.html_safe
end