[초보자용] 추가 주석 기능 제작
8282 단어 Rails
전제 조건
• 기고문 일람페이지 제작상태
· 기고문 일람페이지에 주석 기능 추가
· 댓글은 User와 관련이 없는 규격을 채택했다
(설명이 너무 적어서 죄송합니다. 용서해 주세요.)
주석 기능 작성
주석 모델 생성하기
작성할 열
user_id
content
topic_id
준비
$ rails g model comment user_id:integer content:text topic_id:integer
rails db:migrate
연관 추가(모델 연관)
평론과 투고의 관계는 다음과 같다.
・Comment 에는 Topic 이 있습니다.
・Comment 에는 User 가 있습니다.
· Topic에는 여러 개의 공공 단말기가 있다
이런 연관이 있다.
따라서 Comment 모델에 "belongs to"를 추가하고 Topic 모델에 "has many"를 추가하면 다음과 같습니다.
app/models/comment.rb
class Comment < ApplicationRecord
belongs_to :topic
belongs_to :user
validates :content, presence: true
end
models/topic.rb has_many :comments, dependent: :destroy
has_many :comment_users, through: :comments, source: 'user'
컨트롤러 생성 및 라우팅 설정
$rails g controller comments
config/routes.rb get 'comment/new'
#中略
resources :topics do
resources :comments
#/topics/:topic_id/comment/newのパスが使用できる
end
controllers/comments_controller.rbclass CommentsController < ApplicationController
def new
@comment = Comment.new
@topic_id = params[:topic_id]
end
def create #コメントを登録する
@comment = Comment.new #コメントのインスタンスを作成
@comment.topic_id = params[:topic_id] #記事番号をパラメータから受け取る
@comment.content = params[:content] #コメントの内容をパラメータから受け取る
if @comment.save #コメント登録の条件分岐
redirect_to topics_path, success: 'コメントに成功しました'
else
flash.now[:danger] = "コメントに失敗しました"
render :new
end
end
end
링크 추가
이번에는 투고 일람페이지의 투고에서 평론페이지로 옮길 수 있다.주석 준비 아이콘 링크 붙여넣기
topics/index.html.erb
<%= link_to new_topic_comment_path(topic_id: topic.id), method: :get do %>
<%= image_tag 'icons/comment.png', class: 'topic-index-icon' %>
<% end %>
주석 발언 페이지 만들기
views/comments/new.html.erb
<div class="topic-new-wrapper" >
<div class="container">
<div class="row">
<div class="col-md-6 col-md-offset-3">
<h1 class="text-center">Add Comment</h1>
<%= form_with url: '/topics/' + @topic_id.to_s + '/comments' ,local: true do |f| %>
<div class="form-group">
<%= f.label :content %>
<%= f.text_area :content, class: 'form-control' %>
</div>
<% if logged_in? %>
<%= f.submit 'コメント送信', class: 'btn btn-black btn-block' %>
<% end %>
<% end %>
</div>
</div>
</div>
</div>
결과 작성
주석 추가 페이지
기사 투고 일람페이지
이 졸렬한 보도에 대해 죄송하지만 참고가 되었으면 합니다.
잘못과 인식 오류 등이 있으면 지적해 주십시오.
Reference
이 문제에 관하여([초보자용] 추가 주석 기능 제작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Toshimatu/items/5dc66de9f96fd5d02c41텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)