显示使用thumbs_up gem投票赞成帖子的用户

时间:2013-01-09 01:18:29

标签: ruby-on-rails controller gem undefined

我使用thumbsup gem允许用户对微博进行投票,现在我正在尝试渲染所有投票选择微博的用户。所有的投票功能和路线都运行正常,但我现在从我的Micropost控制器收到错误:

undefined method `voted_for?'

微博控制器:

def into_it  #for the view; displays who likes the post
  @micropost = Micropost.find(params[:id])
  @users = User.voted_for?(@micropost)
  render 'show_users_into_it'
end

微博模型:

acts_as_voteable

用户模型:

acts_as_voter

架构信息:

# Table name: users
#  id                       
#  name            
#  email    

# Table name: microposts
#  id         :integer       
#  comment    :text
#  user_id    :integer    

# Table name: votes
#  id            :integer          not null, primary key
#  vote          :boolean          default(FALSE), not null
#  voteable_id   :integer          not null
#  voteable_type :string(255)      not null
#  voter_id      :integer
#  voter_type    :string(255)

我是否必须进行某种SQL查询而不是没有简单的方法?感谢。

2 个答案:

答案 0 :(得分:2)

您正在获取未定义的方法voted_for?,因为您在User类而不是用户的实例上调用它。

我认为你正在寻找的方法是voters_who_voted,它将被用作:

def into_it  #for the view; displays who likes the post
  @micropost = Micropost.find(params[:id])
  @users = @micropost.voters_who_voted
  render 'show_users_into_it'
end

答案 1 :(得分:-1)

这是因为@users = User.voted_for?(@ micropost)将返回true或false,但不返回实例对象。试着看看这个链接http://openrails.blogspot.com/2012/01/thumbs-up-in-rails.html