좋아하는 기능 만들기 (Ruby on Rails)
10979 단어 초보자Rails프로그래밍 공부 일기
프로그래밍 공부 일기
2020년 7월 24일 Progate Lv.221
Ruby on RailsX
Like 모델 준비
「어떤 유저」가 「어느 투고」를 좋아하는지 기록하기 위해서 데이터베이스에 user_id
와 post_id
의 2 개의 컬럼을 가지는 liques 테이블을 준비한다. 명령을 실행하여 Like 모델과 마이그레이션 파일을 준비합니다.
터미널$ rails generate model Like user_id:integer post_id:integer
$ rails db:migrate
models/likes.rbclass Like < ApplicationRecord
validates :user_id,{presence: true}
validates :post_id,{presence: true}
end
소식에 좋아하는지 표시
게시 세부 정보 페이지에서 로그인 한 사용자가 해당 게시물에 대해 좋아하는 데이터 조건을 만족하면 좋아요.
posts/show.html.erb<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
<%# いいね済みの処理 %>
<% else %>
<%# いいねしていないときの処理 %>
<% end %>
좋아요 버튼 준비
지금까지 컨트롤러는 rails generate controller
로 자동 작성하고 있었다. 이 명령으로 실행하면 뷰 파일도 자동 생성되지만 이번에는 필요하지 않습니다. 그래서 이번에는 controller 폴더 안에 likes_controller.rb
라는 파일을 신규 작성한다.
likes_controller.rbclass LikeController < ApplicationController
def create
end
end
routes.rbpost "likes/:post_id/create" => "likes#create"
좋아요 버튼과 좋아요 취소 버튼 만들기
좋아요 버튼은 create 액션 내에서 새롭게 데이터를 작성 후, 투고 상세 페이지로 리디렉션된다. 좋아 취소 버튼은 liques 관제사에 destroy 액션을 창조한다.
likes_controller.rbdef create
@like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
@like.save
redirect_to("/posts/#{params[:post_id]}")
end
def destroy
@like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
@like.destroy
redirect_to("/posts/#{params[:post_id]}")
end
routes.rbpost "likes/:post_id/create" => "likes#create"
post "likes/:post_id/destroy" => "likes#destroy"
posts/show.html.erb<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
<%= link_to("いいね!済み", "/likes/#{@post.id}/destroy", {method: "post"}) %>
<% else %>
<%= link_to("いいね!", "/likes/#{@post.id}/create", {method: "post"}) %>
<% end %>
좋아요 버튼을 아이콘으로 만들기
FontAwesome을 사용한다. layouts/application.html.erb
에서 <link>
태그를 추가하고 로드합니다. link_form
메소드내에 HTML 요소를 기술해도 캐릭터 라인으로서 인식되어 버리기 때문에, 표시되지 않는다. <%= link_to("URL") do %>
와 <% end %>
사이에 HTML 요소를 쓰면 그 부분을 링크 할 수 있습니다.
posts/show.html.erb<%= link_to( "/likes/#{@post.id}/destroy", {method: "post"}) do %>
<span class="fa fa-heart like-btn-unlike"></span>
<% end %>
좋아요 번호 표시
likes 테이블에서 데이터 건수를 취득하려면 count 메소드를 사용한다. count 메소드는 배열의 요소수를 취득하는 메소드이지만, 테이블의 데이터수를 취득하기 위해서도 이용할 수 있다.
터미널$ rails console
> Like.all.count
=> 3
> Like.where(post_id:1).count
=> 2
posts_controller.rbdef show
@like_count=Like.where(post_id: @post.id.count
end
좋아하는 소식 보기
특정 사용자가 좋아하는 게시물을 목록으로 표시합니다. (사용자와 관련된 페이지이므로, users 컨트롤러 안을 만지다) 좋아하는 투고를 일람으로 표시하기 위해 like 액션을 users 컨트롤러 내에 작성.
routes.rbget "users/:id/likes" => "users#likes"
users_controller.rbdef likes
@user=User.find_by(id: params[:id])
@likes=Like.where(user_id: @user.id)
end
users/likes.html.erb<% @likes.each do |like| %>
<% post=Post.find_by(id: like.post_id) %>
<% end %>
Reference
이 문제에 관하여(좋아하는 기능 만들기 (Ruby on Rails)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mzmz__02/items/b7c56ac518521fa6fa01
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
「어떤 유저」가 「어느 투고」를 좋아하는지 기록하기 위해서 데이터베이스에
user_id
와 post_id
의 2 개의 컬럼을 가지는 liques 테이블을 준비한다. 명령을 실행하여 Like 모델과 마이그레이션 파일을 준비합니다.터미널
$ rails generate model Like user_id:integer post_id:integer
$ rails db:migrate
models/likes.rb
class Like < ApplicationRecord
validates :user_id,{presence: true}
validates :post_id,{presence: true}
end
소식에 좋아하는지 표시
게시 세부 정보 페이지에서 로그인 한 사용자가 해당 게시물에 대해 좋아하는 데이터 조건을 만족하면 좋아요.
posts/show.html.erb<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
<%# いいね済みの処理 %>
<% else %>
<%# いいねしていないときの処理 %>
<% end %>
좋아요 버튼 준비
지금까지 컨트롤러는 rails generate controller
로 자동 작성하고 있었다. 이 명령으로 실행하면 뷰 파일도 자동 생성되지만 이번에는 필요하지 않습니다. 그래서 이번에는 controller 폴더 안에 likes_controller.rb
라는 파일을 신규 작성한다.
likes_controller.rbclass LikeController < ApplicationController
def create
end
end
routes.rbpost "likes/:post_id/create" => "likes#create"
좋아요 버튼과 좋아요 취소 버튼 만들기
좋아요 버튼은 create 액션 내에서 새롭게 데이터를 작성 후, 투고 상세 페이지로 리디렉션된다. 좋아 취소 버튼은 liques 관제사에 destroy 액션을 창조한다.
likes_controller.rbdef create
@like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
@like.save
redirect_to("/posts/#{params[:post_id]}")
end
def destroy
@like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
@like.destroy
redirect_to("/posts/#{params[:post_id]}")
end
routes.rbpost "likes/:post_id/create" => "likes#create"
post "likes/:post_id/destroy" => "likes#destroy"
posts/show.html.erb<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
<%= link_to("いいね!済み", "/likes/#{@post.id}/destroy", {method: "post"}) %>
<% else %>
<%= link_to("いいね!", "/likes/#{@post.id}/create", {method: "post"}) %>
<% end %>
좋아요 버튼을 아이콘으로 만들기
FontAwesome을 사용한다. layouts/application.html.erb
에서 <link>
태그를 추가하고 로드합니다. link_form
메소드내에 HTML 요소를 기술해도 캐릭터 라인으로서 인식되어 버리기 때문에, 표시되지 않는다. <%= link_to("URL") do %>
와 <% end %>
사이에 HTML 요소를 쓰면 그 부분을 링크 할 수 있습니다.
posts/show.html.erb<%= link_to( "/likes/#{@post.id}/destroy", {method: "post"}) do %>
<span class="fa fa-heart like-btn-unlike"></span>
<% end %>
좋아요 번호 표시
likes 테이블에서 데이터 건수를 취득하려면 count 메소드를 사용한다. count 메소드는 배열의 요소수를 취득하는 메소드이지만, 테이블의 데이터수를 취득하기 위해서도 이용할 수 있다.
터미널$ rails console
> Like.all.count
=> 3
> Like.where(post_id:1).count
=> 2
posts_controller.rbdef show
@like_count=Like.where(post_id: @post.id.count
end
좋아하는 소식 보기
특정 사용자가 좋아하는 게시물을 목록으로 표시합니다. (사용자와 관련된 페이지이므로, users 컨트롤러 안을 만지다) 좋아하는 투고를 일람으로 표시하기 위해 like 액션을 users 컨트롤러 내에 작성.
routes.rbget "users/:id/likes" => "users#likes"
users_controller.rbdef likes
@user=User.find_by(id: params[:id])
@likes=Like.where(user_id: @user.id)
end
users/likes.html.erb<% @likes.each do |like| %>
<% post=Post.find_by(id: like.post_id) %>
<% end %>
Reference
이 문제에 관하여(좋아하는 기능 만들기 (Ruby on Rails)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mzmz__02/items/b7c56ac518521fa6fa01
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
<%# いいね済みの処理 %>
<% else %>
<%# いいねしていないときの処理 %>
<% end %>
지금까지 컨트롤러는
rails generate controller
로 자동 작성하고 있었다. 이 명령으로 실행하면 뷰 파일도 자동 생성되지만 이번에는 필요하지 않습니다. 그래서 이번에는 controller 폴더 안에 likes_controller.rb
라는 파일을 신규 작성한다.likes_controller.rb
class LikeController < ApplicationController
def create
end
end
routes.rb
post "likes/:post_id/create" => "likes#create"
좋아요 버튼과 좋아요 취소 버튼 만들기
좋아요 버튼은 create 액션 내에서 새롭게 데이터를 작성 후, 투고 상세 페이지로 리디렉션된다. 좋아 취소 버튼은 liques 관제사에 destroy 액션을 창조한다.
likes_controller.rbdef create
@like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
@like.save
redirect_to("/posts/#{params[:post_id]}")
end
def destroy
@like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
@like.destroy
redirect_to("/posts/#{params[:post_id]}")
end
routes.rbpost "likes/:post_id/create" => "likes#create"
post "likes/:post_id/destroy" => "likes#destroy"
posts/show.html.erb<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
<%= link_to("いいね!済み", "/likes/#{@post.id}/destroy", {method: "post"}) %>
<% else %>
<%= link_to("いいね!", "/likes/#{@post.id}/create", {method: "post"}) %>
<% end %>
좋아요 버튼을 아이콘으로 만들기
FontAwesome을 사용한다. layouts/application.html.erb
에서 <link>
태그를 추가하고 로드합니다. link_form
메소드내에 HTML 요소를 기술해도 캐릭터 라인으로서 인식되어 버리기 때문에, 표시되지 않는다. <%= link_to("URL") do %>
와 <% end %>
사이에 HTML 요소를 쓰면 그 부분을 링크 할 수 있습니다.
posts/show.html.erb<%= link_to( "/likes/#{@post.id}/destroy", {method: "post"}) do %>
<span class="fa fa-heart like-btn-unlike"></span>
<% end %>
좋아요 번호 표시
likes 테이블에서 데이터 건수를 취득하려면 count 메소드를 사용한다. count 메소드는 배열의 요소수를 취득하는 메소드이지만, 테이블의 데이터수를 취득하기 위해서도 이용할 수 있다.
터미널$ rails console
> Like.all.count
=> 3
> Like.where(post_id:1).count
=> 2
posts_controller.rbdef show
@like_count=Like.where(post_id: @post.id.count
end
좋아하는 소식 보기
특정 사용자가 좋아하는 게시물을 목록으로 표시합니다. (사용자와 관련된 페이지이므로, users 컨트롤러 안을 만지다) 좋아하는 투고를 일람으로 표시하기 위해 like 액션을 users 컨트롤러 내에 작성.
routes.rbget "users/:id/likes" => "users#likes"
users_controller.rbdef likes
@user=User.find_by(id: params[:id])
@likes=Like.where(user_id: @user.id)
end
users/likes.html.erb<% @likes.each do |like| %>
<% post=Post.find_by(id: like.post_id) %>
<% end %>
Reference
이 문제에 관하여(좋아하는 기능 만들기 (Ruby on Rails)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mzmz__02/items/b7c56ac518521fa6fa01
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
def create
@like = Like.new(user_id: @current_user.id, post_id: params[:post_id])
@like.save
redirect_to("/posts/#{params[:post_id]}")
end
def destroy
@like = Like.find_by(user_id: @current_user.id, post_id: params[:post_id])
@like.destroy
redirect_to("/posts/#{params[:post_id]}")
end
post "likes/:post_id/create" => "likes#create"
post "likes/:post_id/destroy" => "likes#destroy"
<% if Like.find_by(user_id: @current_user.id, post_id: @post.id) %>
<%= link_to("いいね!済み", "/likes/#{@post.id}/destroy", {method: "post"}) %>
<% else %>
<%= link_to("いいね!", "/likes/#{@post.id}/create", {method: "post"}) %>
<% end %>
FontAwesome을 사용한다.
layouts/application.html.erb
에서 <link>
태그를 추가하고 로드합니다. link_form
메소드내에 HTML 요소를 기술해도 캐릭터 라인으로서 인식되어 버리기 때문에, 표시되지 않는다. <%= link_to("URL") do %>
와 <% end %>
사이에 HTML 요소를 쓰면 그 부분을 링크 할 수 있습니다.posts/show.html.erb
<%= link_to( "/likes/#{@post.id}/destroy", {method: "post"}) do %>
<span class="fa fa-heart like-btn-unlike"></span>
<% end %>
좋아요 번호 표시
likes 테이블에서 데이터 건수를 취득하려면 count 메소드를 사용한다. count 메소드는 배열의 요소수를 취득하는 메소드이지만, 테이블의 데이터수를 취득하기 위해서도 이용할 수 있다.
터미널$ rails console
> Like.all.count
=> 3
> Like.where(post_id:1).count
=> 2
posts_controller.rbdef show
@like_count=Like.where(post_id: @post.id.count
end
좋아하는 소식 보기
특정 사용자가 좋아하는 게시물을 목록으로 표시합니다. (사용자와 관련된 페이지이므로, users 컨트롤러 안을 만지다) 좋아하는 투고를 일람으로 표시하기 위해 like 액션을 users 컨트롤러 내에 작성.
routes.rbget "users/:id/likes" => "users#likes"
users_controller.rbdef likes
@user=User.find_by(id: params[:id])
@likes=Like.where(user_id: @user.id)
end
users/likes.html.erb<% @likes.each do |like| %>
<% post=Post.find_by(id: like.post_id) %>
<% end %>
Reference
이 문제에 관하여(좋아하는 기능 만들기 (Ruby on Rails)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mzmz__02/items/b7c56ac518521fa6fa01
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ rails console
> Like.all.count
=> 3
> Like.where(post_id:1).count
=> 2
def show
@like_count=Like.where(post_id: @post.id.count
end
특정 사용자가 좋아하는 게시물을 목록으로 표시합니다. (사용자와 관련된 페이지이므로, users 컨트롤러 안을 만지다) 좋아하는 투고를 일람으로 표시하기 위해 like 액션을 users 컨트롤러 내에 작성.
routes.rb
get "users/:id/likes" => "users#likes"
users_controller.rb
def likes
@user=User.find_by(id: params[:id])
@likes=Like.where(user_id: @user.id)
end
users/likes.html.erb
<% @likes.each do |like| %>
<% post=Post.find_by(id: like.post_id) %>
<% end %>
Reference
이 문제에 관하여(좋아하는 기능 만들기 (Ruby on Rails)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mzmz__02/items/b7c56ac518521fa6fa01텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)