如何找到为帖子投票的current_user? acts_as_votable rails

时间:2014-11-30 11:17:49

标签: ruby-on-rails ruby-on-rails-4

我在视图中有以下代码:

如果current_user.voted_for? post =>给我一个未定义的方法voted_for?

如何找到current_user的{​​{1}}为voted

路线:

post

控制器:

  resources :posts do
    resources :comments, only: [:index, :new, :create]
    member do
      get "like", to: "posts#upvote" 
      get "dislike", to: "posts#downvote" 
    end
  end

查看:

def upvote
    @post.upvote_by current_user
    redirect_to :back
  end

  def downvote
    @post.downvote_by current_user
    redirect_to :back
  end

我根据宝石教程尝试了 <% @posts.each do |post| %> <div class="vote-box"> <p class="up"> <% if post.voted_for? current_user %> <%= link_to(like_post_path(post), method: :get) do %> <i class="entypo-up-dir"></i> <% end %> <% else %> <%= link_to(dislike_post_path(post), method: :get) do %> <i class="entypo-up-dir upvoted"></i> <% end %> <% end %> </p> <p class="vote_count_text"> <%= post.get_upvotes.size %> </p> </div> <% end %> current_user.likes?和几种方法,但没有运气。

由于

1 个答案:

答案 0 :(得分:3)

看起来您所有丢失的方法都与您的用户模型相关,但并不是您尝试使用的所有方法都存在。首先,确保将acts_as_voter混合到模型中。

class User < ActiveRecord::Base
  acts_as_voter
end

来自文档here

第二,@ user.likes?不是一种方法。