0

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

<% @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 不属于装饰器?任何帮助,将不胜感激。

4

1 回答 1

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
于 2013-11-17T22:09:15.817 回答