【Comment】 rails コメント機能実装
【ゴール】
コメント機能の実装
→ コメントの表示
→ コメント件数の表示
参考:https://qiita.com/__kotaro_/items/8a6bda99dab61d2a72a5
【メリット】
■ アプリケーションの完成度が増す
■ UX向上
【開発環境】
■ Mac OS catalina
■ Ruby on Rails (5.2.4.2)
■ Virtual Box:6.1
■ Vagrant: 2.2.7
【実装】
まず、アプリケーション作成
1.commentモデル作成
※DBに記録するので必須
$ rails g model Comment
2.modelへアソシエーション 追記
※ user : comment = 1 : X (1対多)
※ post : comment = 1 : X (1対多)
has_many :comments ,dependent: :destroy
has_many :comments , dependent: :destroy
belongs_to :user
belongs_to :post , optional: true
2.comments controller 作成
※ 今回は作成のみ、createアクションも同時に作成 ①
※ "build"メソッドで紐付いたものも難なく作成 ②
※ "user"を認識させてあげる ③
$ rails g controller Commnets create #①
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"で記述しているので、追加で記述要
def show
@post =Post.find(params[:id])
@comment = Comment.new
@comments = @post.comments.all
3.view 記述
※"form_for"の際には"@post","@comment"両方に情報を!!
<%= 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 %>
以上
Author And Source
この問題について(【Comment】 rails コメント機能実装), 我々は、より多くの情報をここで見つけました https://qiita.com/thk__u/items/93d94b1ede8fb4be2981著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .