Rails【초보자용】코멘트 기능의 실장
9295 단어 코멘트 기능Rails초학자용Rails 튜토리얼루비
전제
Ruby on Rails의 개발 환경이 갖추어져 있습니다.
Posts(투고 테이블)와 User(사용자 테이블)는 이미 작성되어 있다.
User 테이블은 gem devise를 사용하고 있다.
이번에는 게시물에 대한 댓글을 구현합니다.
주석 기능 구현
1.Comment 모델 만들기
작성할 Comments 테이블의 세부사항과 관계에 대해 다음과 같습니다.
터미널에서 모델링
$ rails g model comment
마이그레이션 파일 작성
20********_create_comments.rbclass CreateComments < ActiveRecord::Migration[6.0]
def change
create_table :comments do |t |
#ここから記述
t.references :user,foreign_key: true
t.references :post, foreign_key: true
t.text :text,nul: false
#ここまで記述
t.timestamps
end
end
end
마이그레이션 파일 적응
$ rails db:migrate
Comment 모델과 User 모델, Post 모델을 연결하기
app/models/comment.rbclass Comment < ApplicationRecord
belongs_to :user
belongs_to :post
end
app/models/user.rbclass User < ApplicationRecord
has_many :posts
has_many :comments
end
app/models/post.rbclass Comment < ApplicationRecord
has_many :users
has_many :comments
end
2. 라우팅 만들기
routes.rbRails.application.routes.draw do
resources :users
resources :posts do
resource :comments
end
end
3.Comments 컨트롤러 작성
comments_controller.rbclass CommentsController < ApplicationController
def create
@comment = Comment.create(comment_params)
redirect_back(fallback_location: root_path)
end
private
def comment_params
params.require(:comment).permit(:text).merge(user_id: current_user.id, post_id: params[:post_id])
end
end
posts_controller.rbclass PostsController < ApplicationController
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to user_url(current_user)
else
render :new
end
end
def show
#Commentインスタンスの生成を書く
#今回はPosts#showにてコメント機能を実装したいと思います。
@comment = Comment.new
@comments = @post.comment_cs.includes(:user)
end
private
def post_params
params.require(:post).permit(:text).merge(user_id: current_user.id)
end
def set_post
@post = Post.find(params[:id])
end
end
4. 뷰 작성
글 상세 페이지에 코멘트 기능의 기술을 쓴다.
views/posts/show.html.erb
#省略
<%= form_with model: [@post,@comment],merhod: :post,locals: true do | form | %>
<%= form.text_area :text %>
<%= form.submit "投稿する" %>
<% end %>
#省略
코멘트 기능 완성!
요약
이번은 Rails로 코멘트 기능을 테이블 작성으로부터 실시해 왔습니다.
자신도 프로그래밍 초보자이므로 뭔가 실수가 있으면 알려주세요.
끝까지 읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(Rails【초보자용】코멘트 기능의 실장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/minisera/items/95cdffd14ee1d5347a3e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
1.Comment 모델 만들기
작성할 Comments 테이블의 세부사항과 관계에 대해 다음과 같습니다.
터미널에서 모델링
$ rails g model comment
마이그레이션 파일 작성
20********_create_comments.rb
class CreateComments < ActiveRecord::Migration[6.0]
def change
create_table :comments do |t |
#ここから記述
t.references :user,foreign_key: true
t.references :post, foreign_key: true
t.text :text,nul: false
#ここまで記述
t.timestamps
end
end
end
마이그레이션 파일 적응
$ rails db:migrate
Comment 모델과 User 모델, Post 모델을 연결하기
app/models/comment.rb
class Comment < ApplicationRecord
belongs_to :user
belongs_to :post
end
app/models/user.rb
class User < ApplicationRecord
has_many :posts
has_many :comments
end
app/models/post.rb
class Comment < ApplicationRecord
has_many :users
has_many :comments
end
2. 라우팅 만들기
routes.rb
Rails.application.routes.draw do
resources :users
resources :posts do
resource :comments
end
end
3.Comments 컨트롤러 작성
comments_controller.rb
class CommentsController < ApplicationController
def create
@comment = Comment.create(comment_params)
redirect_back(fallback_location: root_path)
end
private
def comment_params
params.require(:comment).permit(:text).merge(user_id: current_user.id, post_id: params[:post_id])
end
end
posts_controller.rb
class PostsController < ApplicationController
def new
@post = Post.new
end
def create
@post = Post.new(post_params)
if @post.save
redirect_to user_url(current_user)
else
render :new
end
end
def show
#Commentインスタンスの生成を書く
#今回はPosts#showにてコメント機能を実装したいと思います。
@comment = Comment.new
@comments = @post.comment_cs.includes(:user)
end
private
def post_params
params.require(:post).permit(:text).merge(user_id: current_user.id)
end
def set_post
@post = Post.find(params[:id])
end
end
4. 뷰 작성
글 상세 페이지에 코멘트 기능의 기술을 쓴다.
views/posts/show.html.erb
#省略
<%= form_with model: [@post,@comment],merhod: :post,locals: true do | form | %>
<%= form.text_area :text %>
<%= form.submit "投稿する" %>
<% end %>
#省略
코멘트 기능 완성!
요약
이번은 Rails로 코멘트 기능을 테이블 작성으로부터 실시해 왔습니다.
자신도 프로그래밍 초보자이므로 뭔가 실수가 있으면 알려주세요.
끝까지 읽어 주셔서 감사합니다!
Reference
이 문제에 관하여(Rails【초보자용】코멘트 기능의 실장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/minisera/items/95cdffd14ee1d5347a3e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Rails【초보자용】코멘트 기능의 실장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/minisera/items/95cdffd14ee1d5347a3e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)