0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Comment】 rails コメント機能実装 

Last updated at Posted at 2020-04-28

スクリーンショット 2020-04-28 23.00.13.png

#【ゴール】
コメント機能の実装
 → コメントの表示
 → コメント件数の表示

参考: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に記録するので必須

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 %>

スクリーンショット 2020-04-28 23.00.44.png

以上

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?