我有以下型号:
class User < ApplicationRecord
has_many :hobbies, dependent: :destroy
end
class Hobby < ApplicationRecord
belongs_to :user
end
我试图输出用户及其爱好的视图:
<table>
<tr>
<th>User</th>
<th>Hobby</th>
</tr>
<% @users.each do |u| %>
<tr>
<td><%= u.name %></td>
<td><%= u.hobbies %></td>
</tr>
<% end %>
</table>
但我看到以下内容:
User Hobby
Mad Max <Hobby::ActiveRecord_Associations_CollectionProxy:0x007fa2721ab910>
看起来我正在输出集合,但我想要实际的爱好名称。我已经尝试了u.hobbies.first,u.hobbies [:业余爱好]等等。我已经查看http://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.html内部,但它作为一名新开发者让我感到困惑。有人能告诉我如何从集合中的特定字段中提取?哪个资源有一个很好的指导供我参考?
答案 0 :(得分:1)
所以这基本上是一系列爱好附加到用户身上。所以你需要遍历每一个,然后从中询问你想要的属性。尝试这样的事情:
<table>
<tr>
<th>User</th>
<th>Hobby</th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.name %></td>
<td>
<% user.hobbies.each do |hobby| %>
<%= hobby.attribute_name %>,
<% end %>
</td>
</tr>
<% end %>
</table>
如果你想得到真正的幻想,你可以尝试做这样的事情:
<% user.hobbies.each_with_index do |hobby, index| %>
<%= hobby.attribute_name %>
<%= (index == user.hobbies.length-1) ? '' : ','
<% end %>
那是使用三元运算符基本上只说逗号只是爱好不是最后的爱好