Acts_As_Votable无法对其他用户的帖子

时间:2016-12-01 04:37:41

标签: ruby-on-rails ruby acts-as-votable

我正在使用acts_as_votable宝石,并且在投票时遇到了问题。

我有两个型号 - 用户和帖子。用户可以对帖子进行投票。

我遇到的问题是,用户目前只能在自己的帖子上投票,而不能投票给其他用户'讯息。

我认为这是因为我已完成@posts.each,然后用户只能访问自己的帖子,因此他们只能在自己的帖子上投票。或者问题出在我控制器的索引方法中。

Index.html.erb 文件:

<% @posts.each do |post| %>
    <div class="user-input">
        <% if post.user.voted_up_on? post %>
            <%= link_to unlike_post_path(post), method: :put do %>
                <%= image_tag("/assets/like.png") %>
            <% end %>
        <% else %>
            <%= link_to like_post_path(post), method: :put do %>
                <%= image_tag("/assets/heart.png") %>
            <% end %>
        <% end %>
    </div>
<% end %>

Posts_controller (相关方法):

def index
    @posts = Post.includes(:user).order("created_at DESC") #Possible issue is here??
end

def like
    @post.upvote_by current_user
    redirect_to :back
end

def unlike
    @post.unvote_by current_user
    redirect_to :back
end

路线

resources :posts do
    member do 
        put "like", to: "posts#like"
        put 'unlike', to: 'posts#unlike'
    end
end

如果有人可以帮助我理解为什么用户只能在他们自己的帖子上投票会很棒。

1 个答案:

答案 0 :(得分:0)

知道了。

必须更换

<% if post.user.voted_up_on? post %>

使用:

<% if current_user.liked? post %>

我相信是在询问该帖子的创建者是否已对该帖子进行投票,而我只需要当前用户查看他们是否已对该帖子进行了投票。