2017-01-11 2 views
0

私は、次のモデルがあります:Ruby Associations CollectionProxyから特定のフィールドを取得する方法は?

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 [:hobby]などを試しましたが、http://api.rubyonrails.org/classes/ActiveRecord/Associations/CollectionProxy.htmlの中を見てきましたが、私にとっては新しい開発者として混乱しています。誰かがコレクションから特定のフィールドを引き出す方法を教えてもらえますか?そして、私が将来参考になる良いガイドがありますか?

答えて

1

これは基本的に趣味の配列で、ユーザーにアタッチされます。それぞれを繰り返し、必要な属性を尋ねる必要があります。基本的には唯一の趣味ならば、コンマを置くと言って三項演算子を使用している

<% user.hobbies.each_with_index do |hobby, index| %> 
    <%= hobby.attribute_name %> 
    <%= (index == user.hobbies.length-1) ? '' : ',' 
<% end %> 

:あなたは本当の空想を取得したい場合は、このような何かをやってみてください

<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> 

:このような何かを試してみてください最後の趣味ではない

関連する問題