ruby-on-rails – 如何在ERB上返回ActiveRecord关联代理

所以我在模型中通过关联有一个标准的has_many,非常类似于这里的问题:
Loop through ActiveRecord::Associations::CollectionProxy with each

我在那个问题中使用了这个建议但是我觉得我在我的ERB文件上遇到了一些麻烦,所以它出现在我的应用程序中.目前我有以下内容:

<%= @memberships.map do |a| %>
<%=a.name%>
<% end %>

在这种情况下,成员模型是用户和组织通过其拥有许多模型的模型(@memberships = @ user.organizations).所以@ memberships.class返回

ActiveRecord的::协会:: CollectionProxy :: ActiveRecord_Associations_CollectionProxy_Organization

在rails控制台上.所以,在浏览器中,代码在用户处于两个组织中的页面上返回:

orgone orgtwo["\n", "\n"]

我只是不知道如何操纵代理类来返回我想要的东西.谢谢!

更新:

我想通了,我不得不删除块顶部的=,我用逗号添加了一些样式:

<% @memberships.map do |a| %>
<h3><%=a.name %> <%= ", " unless a == @memberships.last %></h3>
<% end %>

最佳答案 如果要打印每个成员的名称,您想要的是什么

<% @memberships.each do |membership| %>
   <%= membership.name %>
<% end -%>

ERB中的<%前缀执行代码而不将结果附加到输出缓冲区,而<%=前缀输出表达式结果的字符串表示形式.由于每个都返回一个枚举器,<%=将返回枚举器的字符串表示形式,类似于#< Enumerator:0xDEADBEEF.

点赞