User
モデルとモデルなどを含むRuby on RailsプロジェクトがContent
あります。ユーザーがコンテンツを「いいね」できるようにしたかったので、acts_as_votable gem でそれを実現しました。
現在、いいねシステムは動いていますが、いいねボタン(link_to)が押されるたびにページを更新しています。
ページを更新せずにボタンといいね! カウンターを更新するために、Ajax を使用してこれを行いたいと思います。
私のContent -> Show
見解では、これは私が持っているものです:
<% if user_signed_in? %>
<% if current_user.liked? @content %>
<%= link_to "Dislike", dislike_content_path(@content), class: 'vote', method: :put %>
<% else %>
<%= link_to "Like", like_content_path(@content), class: 'vote', method: :put %>
<% end %>
<span> · </span>
<% end %>
<%= @content.get_likes.size %> users like this
<br>
Content
コントローラーはこれを好き/嫌いにします:
def like
@content = Content.find(params[:id])
@content.liked_by current_user
redirect_to @content
end
def dislike
@content = Content.find(params[:id])
@content.disliked_by current_user
redirect_to @content
end
そして、routes.rbファイルには、これが私が持っているものです:
resources :contents do
member do
put "like", to: "contents#like"
put "dislike", to: "contents#dislike"
end
end
私が言ったように、いいねシステムは正常に動作していますが、ユーザーが押した後、いいねカウンターもいいねボタンも更新しません。代わりに、それをだますためredirect_to @content
に、コントローラー アクションを呼び出します。
単純な Ajax 呼び出しでこれを実装するにはどうすればよいですか? それを行う別の方法はありますか?