ご覧いただきありがとうございます。
現在教材をもとにrailsアプリを作成しており非同期コメント機能を作成しております。
教材通りに進めていたのですが以下エラーがなかなか解消できないです。
CommentsController#create is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: []
該当するhtmlがないよという意味のエラーかと思いますがjsファイルを用意しておりコントローラーでも
jsファイルに遷移するように記述しています。色々と記述を変えてみたのですがなぜかこのエラーが毎回出てきてしまって詰まってしまいました。
どなたかわかる方ご教授いただけましたら幸いです。
環境は以下の通りです。
macOS Catalina バージョン 10.15.6
Ruby 2.6.6
Rails 5.2.2
show.html.erb
<p><%= @post.content %></p> <div id="like-icon-post-<%= @post.id.to_s %>"> <% if @post.liked_by(current_user).present? %> <%= link_to "いいねを取り消す", post_like_path(@post.id, @post.liked_by(current_user)), method: :DELETE, remote: true, class: "loved hide-text" %> <% else %> <%= link_to "いいね", post_likes_path(@post), method: :POST, remote: true, class: "love hide-text" %> <% end %> </div> <%= form_with model: [@post,@comment] do |f| %> <p> <%= f.text_field :comment %> </p> <%= f.submit "コメントする" %> <% end %>
comments_controller.rb
class CommentsController < ApplicationController before_action :authenticate_user! def create @comment = Comment.new(comment_params) @post = @comment.post if @comment.save respond_to :js else flash[:alert] = "コメントに失敗しました" end end private def comment_params params.required(:comment).permit(:user_id, :post_id, :comment) end end
create.js.erb
$('#comment-post-<%= @post.id.to_s %>'). html('<%= j render "posts/comment_list", { post: @post } %>'); $('#comment-form-post-<%= @post.id.to_s %> #comment_comment').val("");
やったこと
エラーの通り確かにhtmlファイルを用意すればエラーは解消しますが問題なのがなぜjsファイルを読んでくれないのか。よくあるミスでパスやファイル名が違っていて読み込めないとありますが何度も確認しviews/comments/create.js.erbと記述してあります。
またviewでform_withの記述を以下の通りに書いてみたものの特に変化はありませんでした。
<%= form_with model: [@post,@comment], local: false, do |f| %> <p> <%= f.text_field :comment %> </p> <%= f.submit "コメントする" %> <% end %>
<%= form_with model: [@post,@comment], url: post_comments_path(@post), do |f| %> <p> <%= f.text_field :comment %> </p> <%= f.submit "コメントする" %> <% end %>
お手数おかけしますがお力を貸していただけると嬉しいです。宜しくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/27 13:14
2021/10/27 13:38
2021/10/28 08:15