【Favorite】Rails 좋네요 기능 구현
【골】
사용자에게 게시물에 대해 좋아하는 기능 구현
좋아요를 누르면 하트가 붉어집니다.
참고 : htps : // 코 m / 삼각형 / ms / 2c66499848d882c31
【메리트】
UI, UX 향상
어소시에이션의 이해도 향상
【개발 환경】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7
【실장】 "user" "post"기능 구현은 할애
UI, UX 향상
어소시에이션의 이해도 향상
【개발 환경】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7
【실장】 "user" "post"기능 구현은 할애
mac.terminal
$ rails g model Favorite
※ user : favorite = 1 : 다
※ post : favorite = 1 : 다
models/post.rb
has_many :favorites
def favorited_by?(user)
favorites.where(user_id: user.id).exists?
end
models/user.rb
has_many :favorites
models/favorite.rb
belongs_to :user
belongs_to :post
route 추가
※ "favorite"는 "post"에 관련되어 있으므로 루트를 중첩 (부모와 자식)
config/routes.rb
resources :posts do
resources :favorites , only: [:create , :destroy]
end
favorite controller 작성
※ "create", "destroy"도 함께 작성
mac.terminal
$ rails g controller Favorites create destroy
favorite controller 설명
①, ②에서 user_id post_id를 parameter에 전달
favorites_controller.rb
class FavoritesController < ApplicationController
def create
@post = Post.find(params[:post_id]) ①
favorite = @post.favorites.new(user_id: current_user.id) ②
favorite.save
flash[:success] = "Liked post"
redirect_to request.referer
end
def destroy
@post = Post.find(params[:post_id]) ①
favorite = current_user.favorites.find_by(post_id: @post.id) ②
favorite.destroy
redirect_to request.referer
end
end
view 설명
※ model으로 기술 “@post.favorited_by?”를 사용
post/show.html/erb
<% if @post.favorited_by?(current_user) %>
<%= link_to post_favorite_path(@post), method: :DELETE do %>
<i class="fa fa-heart" aria-hidden="true" style="color: red;"></i>
<%= @post.favorites.count %>like
<% end %>
<% else %>
<%= link_to post_favorites_path(@post) , method: :POST do %>
<i class="fa fa-heart-o" aria-hidden="true"></i>
<%= @post.favorites.count %>like
<% end %>
<% end %>
이상
Reference
이 문제에 관하여(【Favorite】Rails 좋네요 기능 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/thk__u/items/c6ab14148a08eeb89e68텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)