PostメソッドのFormatが「html」となっており、jsで渡っていないのが原因かと思っているんですが、
ページの検証をするとどのform_withにはデフォルトにあるremote :trueが機能していませんでした
何が原因でしょうか?
Instagram風アプリを作っていまして、
<div id="comment-post-<%= post.id.to_s %>"> <%= render 'comment_list', { post: post } %> </div> <%= link_to time_ago_in_words(post.created_at).upcase + "前", post_path(post), class: "light-color post-time no-text-decoration" %> <hr> <div class="row actions" id="comment-form-post-<%= post.id.to_s %>"> <%= form_with model: [post, Comment.new], class: "w-100" do |f| %> <%= f.hidden_field :user_id, value: current_user.id %> <%= f.hidden_field :post_id, value: post.id %> <%= f.text_field :comment, class: "form-control comment-input border-0", placeholder: "コメント ...", autocomplete: :off %> <% end %> </div> </div> </div> </div> </div> </div> <% end %> ここでコメントを作り送信すると、 ActionController::UnknownFormat in CommentsController#create ActionController::UnknownFormat Extracted source (around line #7): 5 6 7 8 9 10@post = @comment.post if @comment.save respond_to :js else flash[:alert] = "コメントに失敗しました" end
Rails.root: /myapp
Application Trace | Framework Trace | Full Trace
app/controllers/comments_controller.rb:7:in `create'
Request
Parameters:
{"authenticity_token"=>"[FILTERED]", "comment"=>{"user_id"=>"1", "post_id"=>"6", "comment"=>"こんにちは"}, "post_id"=>"6"}
Toggle session dump
Toggle env dump
Response
Headers:
None
このようなエラーがおこりました。
コントローラーはこのようになります
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
def destroy
@comment = Comment.find_by(id: params[:id])
@post = @comment.post
if @comment.destroy
respond_to :js
else
flash[:alert] = "コメントの削除に失敗しました"
end
end
private
def comment_params
params.required(:comment).permit(:user_id, :post_id, :comment)
あなたの回答
tips
プレビュー