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

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

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

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

Ruby on Rails

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

0回答

1387閲覧

非同期通信でのコメント投稿・削除がうまくいかない

hana_123

総合スコア3

Ruby

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

Ruby on Rails

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

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

0クリップ

投稿2020/11/20 11:14

前提・実現したいこと

コメントの非同期通信についての質問です。
非同期通信にてコメント投稿・削除ができるようにしたいのですが、うまく動作しません。

・現状削除はうまく非同期でできています。
・投稿のみ非同期通信でうまくいきません。
・投稿の詳細ペー是でのコメント投稿となります。

該当のソースコード

comments/_index.html.erb

<% if comments.present? %> <% comments.each do |comment| %> <div class='comment-context'> <li> <% if comment.user.avatar.attached? %> <%= image_tag(comment.user.avatar, class:"avatar-post", id:"avatar-post") %> <% end %> <%= link_to comment.user.name, user_path(comment.user.id) %> : <%= comment.text %></li> </div> <% if user_signed_in? && current_user.id == comment.user.id %> <%= link_to "Delete", post_comment_path(comment.post_id, comment.id), method: :delete, remote: true, data: { confirm: "You sure?" }, class: 'btn btn-danger btn-sm', id: 'delete_btn' %> <% end %> <% end %> <% else %> <div class="comment-do" id="comment-do"> NO COMMENT YET </div> <% end %>

comments/index.js.erb

$("#comments").prepend("<%= redirect_back(fallback_location: root_path, { comments: @comment.post.comments }) %>") $("form-talk").val('')

routes.rb

Rails.application.routes.draw do resources :posts do resources :comments, only: [:index, :create, :destroy] post 'add' => 'likes#create' delete '/add' => 'likes#destroy' end end

comments_controller

class CommentsController < ApplicationController before_action :authenticate_user! def create @post = Post.find(params[:post_id]) #① @comment = Comment.new(comment_params) @comment.user_id = current_user.id #③ if @comment.save redirect_back(fallback_location: :root_path) end end def destroy @post = Post.find_by(params[:id]) @comment = Comment.find(params[:id]) if @comment.destroy redirect_back(fallback_location: root_path) end end private def comment_params params.require(:comment).permit(:text).merge(user_id: current_user.id, post_id: params[:post_id]) end end

posts_controller/show

def show @comments = @post.comments.includes(:user) @comment = Comment.new @user = @comment.user @like = Like.new end

補足情報(FW/ツールのバージョンなど)

'rails', '~> 6.0.0'
ruby '2.6.5'
javascrip

ここにより詳細な情報を記載してください。

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

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

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

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

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

yambejp

2020/11/21 01:50

jsはfetch明示的に非同期処理を書いてみては?
hana_123

2020/11/24 12:16

返信遅れて申し訳ありません。 現在の記述方法かactioncableを使っての実装希望なのですがそちらで可能でしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問