Rails:赞成模型的用户列表(pin)

时间:2014-08-10 16:04:35

标签: ruby-on-rails ruby associations vote

所以我有一个基本的rails应用程序,用户可以在其上投票 - 现在我想显示一个用户列表,其中提升了视图的引脚(app / views / pins / show.html.erb)

应用/模型/ user.rb

  has_many :pins    
  has_many :votes, dependent: :destroy
  has_many :upvoted_pins, through: :votes, source: :pin

应用/模型/ pin.rb

has_many :votes, dependent: :destroy
has_many :upvoted_users, through: :votes, source: :user

应用/控制器/ pins_controller.rb

  def show
    @disable_nav = true
    @pin = Pin.friendly.find(params[:id])
    @pin.upvoted_users

  end

然后我添加了代码来渲染谁在app / views / pins / show.html.erb中赞成了引脚

<ul><li><%= @pin.upvoted_users %></li></ul>

但是当我加载页面时它显示了一个关联错误:

#<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_User:0x007fddde186370>

这很奇怪,因为当我在我的rails控制台中检查@ pin.upvoted_users时,我得到了正确支持该引脚的用户。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这是由于lazy loading

要列出用户,您可以使用循环,例如:

<ul>
  <% @pin.upvoted_users.each do |user| %>
    <li><%= user.name %></li>
  <% end %>
</ul>

答案 1 :(得分:0)

解决!

如果有人面临同样的问题,这是我自己的一个愚蠢的错误: 您可以渲染赞成这些引脚的用户列表:

<% @pin.upvoted_users.each do |user| %>
      <ul><li><%= user.name %></li></ul>
    <% end %>