【Comment】 rails 코멘트 기능 실장



【골】



주석 기능 구현
 → 댓글 표시
 → 댓글 건수 표시

참고 : htps : // m / __ 코타로 _ / ms / 8 a 6b, 99, b61d2 a 72 a 5

【메리트】



■ 어플리케이션의 완성도가 늘어난다
■UX 향상

【개발 환경】



■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7

【실장】



첫째, 애플리케이션 작성

1.comment 모델링
※DB에 기록하므로 필수

mac.terminal
$ rails g model Comment 

2.model에 어소시에이션 추기
※※user : comment = 1 : X (1대다)
※※post : comment = 1 : X (1대다)

models/post.rb
has_many :comments ,dependent: :destroy

models/user.rb
has_many :comments , dependent: :destroy

modles/comment.rb
belongs_to :user
belongs_to :post , optional: true

2.comments controller 만들기
※※ 이번에는 작성만, create 액션도 동시에 작성 ①
※※"build"메소드로 붙은 것도 어렵지 않고 작성②
※※"user"를 인식시켜 주는 ③

mac.terminal
$ rails g controller Commnets create  #①

posts_controller.rb
 class CommentsController < ApplicationController
    before_action :authenticate_user!

    def create
        @post = Post.find(params[:post_id])
        @comment = @post.comments.build(comment_params)  #②
        @comment.user_id = current_user.id  #③
        if @comment.save
            flash[:success] = "コメントを投稿しました"
            redirect_back(fallback_location: root_path)
        else
            flash[:unsuccess] = "コメントを投稿できませんでした"
            redirect_back(fallback_location: root_path)
        end
    end

    private
    def comment_params
        params.require(:comment).permit(:text)
    end

※이번은 "post/show"로 기술하고 있으므로, 추가로 기술 필요

posts_controller.rb
    def show
        @post =Post.find(params[:id])
        @comment = Comment.new
        @comments = @post.comments.all

3.view 묘사
※※"form_for"때에는"@post ","@comment "양쪽에 정보를!!

views/posts/show.html.erb
<%= form_for [@post , @comment] do |f| %> #コメント送信フォーム
  <%= f.text_area :text %>
  <%= f.submit "Comment"%>
<% end %>

          (中略)

<% @comments.each do |c| %> #コメント表示
  <%= c.text %>
  <%= c.user.name %>
  <%= c.created_at %>
<% end %>



이상

좋은 웹페이지 즐겨찾기