###前提・実現したいこと
ajaxによるLike機能を実装したいと考えています。
下記の参考エントリに基づきコードを書いたのですが、Likeボタンをクリックしても反応がありません。
コンソールに下記のエラーが出ていました。
Completed 500 Internal Server Error in 673ms (ActiveRecord: 29.7ms) ActionView::Template::Error (undefined local variable or method `plan' for #<#<Class:0x007fd3f5972d88>:0x007fd3f5965e30> Did you mean? plans): 4: | 5: = plan.likes_count 6: br 7: - elsif plan.like_user(current_user.id) 8: = button_to plan_like_path([likes, like], plan_id: plan.id), method: :delete, id: "like-button", remote: true do 9: span.heart 10: = image_tag("icon_red_heart.svg")
ところが、リロードするとLikeが増減しています。
Likeボタンを押すことで、ページ遷移無しでLikeが増減するようにしたいと思っています。
###参考にしたエントリー
http://qiita.com/YuitoSato/items/94913d6a349a530b2ea2
http://qiita.com/yukisaibai/items/0a84e8c02f423faa7891
###likes_controller.rb
class LikesController < ApplicationController before_action :set_likes before_action :authenticate_user! def create @like = Like.create(user_id: current_user.id, plan_id: params[:plan_id]) end def destroy like = Like.find_by(user_id: current_user.id, plan_id: params[:plan_id]) like.destroy end private def set_likes @likes = Like.where(plan_id: params[:plan_id]) end end
###/view/likes/_like.html.slim
- if current_user.nil? span.heart = image_tag("icon_red_heart.svg") | = plan.likes_count br - elsif plan.like_user(current_user.id) = button_to plan_like_path([likes, like], plan_id: plan.id), method: :delete, id: "like-button", remote: true do span.heart = image_tag("icon_red_heart.svg") | = plan.likes_count br - else = button_to plan_likes_path(plan), id: "like-button", remote: true do span.heart = image_tag("icon_heart.svg") | = plan.likes_count br
###/view/likes/create.js.slim
| $("#like-button").html(" = j(render partial: 'like', locals: { plans: @plans, likes: @likes, like: @like }) | ");
###/view/likes/destroy.js.slim
| $("#like-button").html(" = j(render partial: 'like', locals: { plans: @plans, likes: @likes }) | ");
###補足情報
本番環境
・さくらVPS
・ubuntu 16.04
・nginx 1.10.3-0
・unicorn 4.9.0-2build2
・ruby 2.4.1p111 (2017-03-22 revision58053) [x86_64-darwin16]
・Rails 5.0.3
開発環境
・cloud9
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/10 12:28
2017/07/10 12:29