現状と問題
railsでTwitterクローンアプリを作成しております。
各投稿にfontawesomeでdeleteボタンをつけていて、そこから削除を非同期で行いたいと考えております。
現状はボタンを押し、deleteの処理が行われますが、投稿一覧のページに反映されず、更新をすることで反映される状態です。
![
該当コード
HTML
1//_index.html.erb 2<div class="project-boxes jsGridView"> 3 <% @posts.each do |post| %> 4 <div class="project-box-wrapper"> 5 <div class="project-box"> 6 <div class="project-box-header"> 7 <div class="project-box-header-introduction"> 8 <%= link_to attachment_image_tag(post.user, :profile_image, format: 'jpeg', size: "50x50", fallback: "no_image.jpg", size:'100x100'), user_path(post.user.id) %> 9 <%= link_to_if post.user, post.user.name, user_path(post.user.id) %> 10 </div> 11 12 <div class="post-action-#{ post.id }"> 13 <%= link_to(content_tag(:i, nil, class: 'fas fa-edit'), edit_post_path(post), remote: true) %> 14 <%= link_to(content_tag(:i, nil, class: 'fas fa-trash-alt'), post_path(post), method: :delete, remote: true, data: { confirm: '本当に削除しますか?' }) %> 15 </div> 16 </div> 17 <div class="project-box-content-header"> 18 <p class="box-content-header "><%=safe_join(post.body.split("\n"),tag(:br))%></p> 19 </div> 20 <div class="project-box-footer "> 21 <div id="likes_buttons_<%= post.id %>"> 22 <%= render partial: 'posts/post', locals: {post: post} %> 23 </div> 24 <div class="days-left " style="color: #ff942e; "> 25 <%= l post.created_at, format: :default %> 26 </div> 27 </div> 28 </div> 29 </div> 30 <% end %> 31</div>
destroyjserb
1$(".post-action-<%= @post.id %>").remove();
userscontroller
1class PostsController < ApplicationController 2 3 before_action :authenticate_user! 4 5 def index 6 @users = User.all 7 @post = Post.new 8 @posts = Post.order(created_at: :desc) 9 @following_users = current_user.following_user 10 @follower_users = current_user.follower_user 11 end 12 def destroy 13 @post = Post.find(params[:id]) 14 @post_id = @post.id 15 @post.destroy 16 respond_to do |format| 17 format.js 18 end 19 20 end 21 22 private 23 24 def post_params 25 params.require(:post).permit(:body, :image, :user_id) 26 end 27end 28
最後に
destroy.js.erbでの処理がうまくいっていないのだとは思います。
.remove()をする際に選択しているセレクタが間違っているのでしょうか。
その投稿自体を消すならばeach文の真下の<div class="project-box-wrapper">をセレクタにしなければならないのでしょうか。
そうなるとpost.idが取れないので対象のものを削除できないのではないか、と多方向で迷っています。
ご回答何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/03 01:14
2021/11/03 03:10
2021/11/04 06:42