“父必须存在”和“没有为CommentsController找到模板#create,呈现head:no_content”Rails 5

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“父必须存在”和“没有为CommentsController找到模板#create,呈现head:no_content”Rails 5相关的知识,希望对你有一定的参考价值。

我用“新评论”表单得到了一个奇怪的错误。

首先,当我提交评论时 - 我得到一个弹出窗口来保存文件(没有要保存的文件)。

chrome popup但是,评论没有创建,因为我的应用程序认为其中一个评论的属性必须存在,而不需要。

提交时这是我的错误:

errors: ["Parent must exist"]
No template found for Events::CommentsController#create, rendering head :no_content

(但是,当您提交带有头部的评论时,它会按预期工作)

comments_controller.rb

  def create
    @comment = @commentable.comments.build(comment_params)
    if @comment.save
      flash[:success] = "Your comment was successfully saved."
      redirect_to @commentable
    else
      puts "errors: #{@comment.errors.full_messages}"
      flash[:danger] = "Uh Oh"
    end
  end

schema.rb

  create_table "comments", force: :cascade do |t|
    t.integer "parent_id"
    t.string "commentable_type"
    t.bigint "commentable_id"
  end

comment.rb

class Comment < ApplicationRecord
  belongs_to :commentable, polymorphic: true

  belongs_to :parent, class_name: "Comment"
  has_many :children, class_name: "Comment", foreign_key: :parent_id, dependent: :destroy
end

new_comment_form.html.erb

<%= form_for [commentable, Comment.new] do |f| %>
  <div class="form-group">
    <div class="col-6">
      <%= f.text_area :body, class: "form-control", placeholder: "", style: "height: 200px;" %>
    </div>
  </div>
  <div class="form-group">
    <div class="col-3">
      <%= f.submit "add comment", class: "btn btn-light ", id: "submit-comment" %>
    </div>
  </div>
<% end %>
答案

Rails 5默认需要belongs_to关联 - 有一篇很棒的文章关于它here

基本上,你只需要将你的belongs_to关系标记为可选:

belongs_to :parent, class_name: "Comment", optional: true

以上是关于“父必须存在”和“没有为CommentsController找到模板#create,呈现head:no_content”Rails 5的主要内容,如果未能解决你的问题,请参考以下文章

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等

shell中$()和 ` `${}${!}${#}$[] 和$(()),[ ] 和(( ))和 [[ ]]

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

Java基础8---面向对象代码块和继承和this和super和重写和重载和final

JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

malloc和free,brk和sbrk和mmap和munmap的使用和关系以及内存分配的原理