1

我正在使用 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 查询,而不是没有简单的方法?谢谢。

4

2 回答 2

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
于 2013-01-09T02:24:31.643 回答
-1

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

于 2013-01-09T02:00:29.243 回答