2016-12-01 10 views
0

私はacts_as_votable宝石を使用しており、投票に問題があります。Acts_As_Votableは他のユーザーの投稿に投票できません

私は2つのモデルがあります - ユーザと投稿。ユーザーは投稿に投票することができます。

私が抱えている問題は、ユーザーが現在自分の投稿でのみ投票できますが、他のユーザーの投稿では投票できないということです。

これは私が@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 

誰かがなぜ自分の投稿だけに投票できるのか理解できるように助けてくれる人は、素晴らしい人だと思います。

+0

@postsには、現在のユーザーのみが作成したすべての投稿または投稿が含まれていますか? –

+0

@BalaKarthikは私のコントローラを見ますが、 '@posts = Post.includes(:user).order(" created_at DESC ")' –

+0

はい、私は@postsに何が含まれているか知る必要があることを知りましたか? –

答えて

0

私はどうかを確認するために、単に現在のユーザーが必要なのに対し、ポストの作成者は、ポストに投票した場合、それが求めていたと信じて

<% if current_user.liked? post %> 

はと

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

を交換しなければなりませんでした彼らはポストに投票しました。

関連する問題