##困っていること・前提
Railsで非同期通信でコメント機能を実装中ですがコメントしたコメントした一覧が表示されなく困っています。
参考にしたサイト
https://makunblog.com/programming/832/#i-7
https://qiita.com/yuto_1014/items/c7d6213139a48833e21a
https://ysk-pro.hatenablog.com/entry/2018/02/10/101739
##comments_controller.rb
class CommentsController < ApplicationController def create @post = Post.find(params[:post_id]) @comment = @post.comments.build(comment_params) @comment.user_id = current_user.id if @comment.save! render :index end end def destroy @comment = Comment.find(params[:id]) if @comment.destroy render :index end end private def comment_params params.require(:comment).permit(:content, :post_id, :user_id) end end
##アソシエーション設定
models/user.rb
class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_one_attached :image has_many :posts, dependent: :destroy validates :name, presence: true has_many :posts, dependent: :destroy has_many :comments, dependent: :destroy end
models/post.rb
class Post < ApplicationRecord has_many_attached :images has_one_attached :video belongs_to :user has_many :users belongs_to :user has_many :comments, dependent: :destroy end
models/comment.rb
class Comment < ApplicationRecord belongs_to :user belongs_to :item #バリデーション validates :content, presence: true end
##views/comments/_form.html.erb
<%= form_for [@post, @comment], remote: true do |f| %> <div class="field"> <div class="control"> <%= f.text_area :content, class:"input", placeholder:"コメント" %> <%= f.hidden_field :post_id, value: @post.id %> </div> </div> <br> <div class="field is-grouped"> <div class="control"> <%= f.submit 'コメントする', class:"button is-link form__submit" %> </div> </div> <% end %>
##views/comments/_index.erb
<% comments.each do |c| %> <div> <a href="/users/<%= c.user.id %>"><%= c.user.username %></a> <%= c.content %> <% if c.user.id == current_user.id %> <br> 投稿日:<%= c.created_at.to_s(:datetime_jp) %> <%= link_to post_comment_path(c.post_id, c.id), method: :delete, remote: true, data: {confirm: "削除しますか?"} do %> <span class="panel-icon"> <i class="fas fa-trash"></i> </span> <% end %> <hr> <% else %> <br> 投稿日:<%= c.created_at.to_s(:datetime_jp) %> <hr> <% end %> </div> <% end %>
##views/comments/index.js.erb
$("#comments_area").html("<%= j(render 'index', { comments: @comment }) %>") $("textarea").val('')
##追記
translation missing: ja.activerecord.errors.messages.record_invalid
と書かれていたのでGemfileにrails-i18nを追加しbundle installしたところこのようなエラーが発生しました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。