質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

1288閲覧

【Ajax】destroy機能を非同期処理で行う方法

tomomomo

総合スコア22

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2021/11/02 15:32

現状と問題

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が取れないので対象のものを削除できないのではないか、と多方向で迷っています。

ご回答何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

erb

1<!-- 間違い --> 2<div class="post-action-#{ post.id }"> 3 4<!-- 以下にします --> 5<div class="post-action-<%= post.id %>">

ただし、この位置にclass="post-action-<%= post.id %>" を追加するとボタンが消えるだけなので、
以下の位置に追加すると良いのではないでしょうか(本当はクラス名も修正した方が良い)。

erb

1<div class="project-box-wrapper post-action-<%= post.id %>">

投稿2021/11/02 17:18

neko_daisuki

総合スコア2090

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomomomo

2021/11/03 01:14

回答ありがとうございます! <div class="project-box-wrapper>より下にクラスまたはidを追加しなくてはいけないと考えておりましたが、追加することで解決できるのですね! クラス名に関しては、post-<%= post.id %>の方がよろしいでしょうか?
neko_daisuki

2021/11/03 03:10

重複しないならそれでもいいと思います。
tomomomo

2021/11/04 06:42

ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問