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

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

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

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

Ajax

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

Q&A

1回答

985閲覧

【rails5】Ajaxでのコメント投稿機能のrenderが上手くいかず、Template is missingとなってしまう。

fgsdrwr

総合スコア4

Ruby on Rails

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

Ajax

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

0グッド

1クリップ

投稿2019/12/24 15:11

編集2019/12/25 03:03

ruby on railsでレシピ投稿サイトを作成しております。(初学者です。)
投稿したレシピに対してAjaxでのコメント機能を実装中にエラーが発生し、
解決策が見えないため質問させていただきます。

コメント機能実装には以下のサイトを参考にさせていただきました。
Ajaxを用いた動的なコメント投稿・削除機能の実装で学ぶRuby on Rails

発生している問題・エラー

コメントをsubmitすると、Ajaxが機能せず、「Template is missing」のエラー画面となり、
JSファイルにアクセスできていないようです。
コメントの削除は正常に機能しています。
イメージ説明

recipes.controller.rb(一部抜粋)

def show @recipe = Recipe.find(params[:id]) @comment = Comment.new @comments = @recipe.comments @like = Like.new end ```### comments.controller.rb ```ここに言語名を入 class CommentsController < ApplicationController before_action :authenticate_user! def create @recipe = Recipe.find(params[:recipe_id]) @comment = @recipe.comments.build(comment_params) @comment.user_id = current_user.id if @comment.save render :js_comment end end def destroy @comment = Comment.find(params[:id]) if @comment.destroy render :js_comment end end private def comment_params params.require(:comment).permit(:content, :recipe_id, :user_id) end end

show.html.slim

.d-flex.align-items-center.mt-4.mb-4 .ml-auto.boards__linkBox = link_to '一覧', recipes_path, class: 'btn btn-outline-dark' = link_to '編集', edit_recipe_path(@recipe), class: 'btn btn-outline-dark' = render @recipe .comment__list .comment__listTitle h3 |コメント #comments_area = render partial: 'comments/index', locals: { comments: @comments } - if user_signed_in? .comment_form = render partial: 'comments/form', locals: { comment: @comment, recipe: @recipe }

_form.html.slim

.comment__formBox .comment__formTitle p | コメントを残す = form_with(model: [recipe, comment] ) do |f| = f.text_area :content, placeholder: "コメントを入力", class: 'form-control', rows: 4, id: "text_area" = f.submit "コメントする!",class: 'btn btn-outline-warning',remote: true

_index.html.slim

- comments.each do |comment| .comment_item - unless comment.id.nil? .comment_user = link_to "#{comment.user.name}さん", comment.user .comment-body = simple_format(comment.content) .comment_delete_btn - if comment.user == current_user = link_to '削除', recipe_comment_path(comment.recipe_id, comment.id), method: :delete, remote: true, class: 'btn btn-outline-secondary'

js_comment.js.erb

$("#comments_area").html("<%= j(render 'index', { comments: @comment.recipe.comments }) %>") $("textarea").val('')

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

rails 5.2

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

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

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

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

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

guest

回答1

0

どういうエラーなのか、エラーメッセージを添えないと正しい回答が得られません。

推定ですが "_index.html.*" が見つからないのだと思います。

=====
で、js_comment.js.erb はどこにあります?

投稿2019/12/24 21:11

編集2019/12/25 03:11
winterboum

総合スコア23329

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

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

fgsdrwr

2019/12/25 03:06

ご回答ありがとうございます。 申し訳ありません。エラー画面のキャプチャーを追記いたしました。 js_comment.js.erbが見つからないようです... ご返信頂けますと幸いです。
fgsdrwr

2019/12/25 05:17

js_comment.js.erbは、app/views/comments/の直下に配置しております。 ファイルの中身は、質問内容の下部に記載しておりますが、いかがでしょうか。
winterboum

2019/12/30 08:08 編集

探しているのは、html.erb であるのは js.erb ですね。 どうするんだったっけな、、、、 form_with にremote: true で行けたかな
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問