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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

Ruby on Rails

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

jQuery

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

非同期処理

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

Q&A

解決済

1回答

2542閲覧

コメント機能に非同期通信を実装させたい

sk48801728

総合スコア12

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

Ruby on Rails

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

jQuery

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

非同期処理

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

0グッド

0クリップ

投稿2020/05/15 10:56

編集2020/05/16 11:09

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
投稿詳細ページにコメント機能を追加し、コメントした際に非同期通信となるように実装したいです。

しかしながらコントローラーファイル及びhtml.hamlファイルなどにコードを記載しconsole.log(this)で動作を確認すると以下メッセージが検証ツールで表示されコメントの送信がされません。
※なぜかリロードすると入力したコメントの内容が表示されます。

発生している問題・エラーメッセージ

検証ツールのconsoleに以下メッセージが表示されます jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:10255 POST http://localhost:3000/tweets/12/comments 404 (Not Found) send @ jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:10255 ajax @ jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:9739 (anonymous) @ comment.self-b8461feeeb1fa3dbdb29c3e8c7a150e3b17471b59d9e627745b1ade413b82a51.js?body=1:17 dispatch @ jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:5227 elemData.handle @ jquery.self-bd7ddd393353a8d2480a622e80342adf488fb6006d667e8b42e4c0073393abee.js?body=1:4879

該当のソースコード

「show.html.haml」 .container - if current_user = form_with(model: [@tweet, @comment], local: true, id: "new_comment") do |form| = form.text_area :text, placeholder: "コメントする", rows: "2",class: "textbox" = form.submit "コメントする",class: "form__submit" - else %strong %p ※※※ コメントの投稿には新規登録/ログインが必要です ※※※ .comments %h4 <コメント一覧> - if @comments - @comments.each do |comment| %p %strong = link_to comment.user.nickname, "/users/#{comment.user_id}" : = comment.text = render "footer" 「comment.js」 $(function () { function buildHTML(comment) { var html = `<p> <strong> <a href=/users/${comment.user_id}>${comment.user_name}</a> : </strong> ${comment.text} </p>` return html; } $('#new_comment').on('submit', function (e) { e.preventDefault(); console.log(this) var formData = new FormData(this); var url = $(this).attr('action') $.ajax({ url: url, type: "POST", data: formData, dataType: 'json', processData: false, contentType: false }) .done(function (data) { var html = buildHTML(data); $('.comments').append(html); $('.textbox').val(''); $('.form__submit').prop('disabled', false); }) .fail(function () { alert('error'); }) }) }); 「create.json.jbuilder」 json.text @comment.text json.user_id @comment.user.id json.user_name @comment.user.nickname 「comments_controller.rb」 class CommentsController < ApplicationController def create @comment = Comment.create(comment_params) respond_to do |format| format.html { redirect_to tweet_path(params[:tweed_id]) } format.json end redirect_to "/tweets/#{comment.tweet.id}" end private def comment_params params.require(:comment).permit(:text).merge(user_id: current_user.id, tweet_id: params[:tweet_id]) end end

試したこと

comment.jsファイルに
.fail(function () {
alert('error');
を追記し正常にformatDataが入力されているかを確認するもコメント入力後送信ボタン押下でアラートのポップアップが表示されました。

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

ruby 2.5.1p57 (2018-03-29 revision 63029)
Rails 5.2.4.2
gem 'jquery-rails'設定ずみ
application.jsに、
//= require jquery
//= require rails-ujs
//= require activestorage
//= require turbolinks
//= require_tree .
となっていることも確認ずみ。

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

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

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

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

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

guest

回答1

0

自己解決

「comments_controller.rb」に余分なスペルが入っておりそれを消したところ解決いたしました!

投稿2020/05/17 06:22

sk48801728

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問