RubyOnRails 5) Like 좋아요 기능
참고 : http://sookmyunglion.tistory.com/7#comment14590767
먼저 Like Model을 만들어준다.
1 | $ rails g model like post:references user:references $ rails db:migrate | cs |
그리고 Post와 User에 Like와의 관계를 연결해준다.
추가로 User에는 해당 유저가 좋아요를 눌렀는지 체크를 하는 메소드 is_like?를 추가해준다.
1 2 3 4 5 6 7 8 9 | \app\models\post.rb has_many :likes \app\models\user.rb has_many :likes def is_like?(post) Like.find_by(user_id: self.id, post_id: post.id).present? end | cs |
다음, Likes controller를 만들어주고 Route로 like를 지정해주기.
1 2 3 | $ rails g controller likes \config\routes.rb post 'posts/:id/like' => 'likes#like_toggle' | cs |
다음 like_toggle을 채워주고, view 파일을 정리.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | \app\controllers\likes_controller.rb def like_toggle like = Like.find_by(user_id: current_user.id, post_id: params[:id]) if like.nil? Like.create(user_id: current_user.id, post_id: params[:id]) else like.destroy end redirect_to :back end | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | \app\views\posts\show.html.erb <p> <strong>Like:</strong> <%= @post.likes.size %> 명이 좋아합니다. </p> <% if current_user.is_like? (@post) %> <form action='/posts/<%= @post.id%>/like' method='post'> <button> 좋아요 취소 </button> </form> <% else %> <form action='/posts/<%= @post.id%>/like' method='post'> <button> 좋아요</button> </form> <% end %> | cs |
좋아요 개수를 확인하는 법은 post.like.size 를 통해 확인
'Archived(Programming) > Ruby on Rails(기초)' 카테고리의 다른 글
RubyOnRails 7) Pagination 페이지 나누기 (0) | 2018.12.29 |
---|---|
RubyOnRails 6) Carrierwave 이미지 첨부 기능 (0) | 2018.12.28 |
RubyOnRails 4) Search 검색하기 (0) | 2018.12.27 |
RubyOnRails 3) Devise 기본 (0) | 2018.12.26 |
RubyOnRails 2) Model 관계 설정 (0) | 2018.12.26 |