我在视图中有以下代码:
如果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?
和几种方法,但没有运气。
由于
答案 0 :(得分:3)
看起来您所有丢失的方法都与您的用户模型相关,但并不是您尝试使用的所有方法都存在。首先,确保将acts_as_voter混合到模型中。
class User < ActiveRecord::Base
acts_as_voter
end
来自文档here。
第二,@ user.likes?不是一种方法。