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