“父必须存在”和“没有为CommentsController找到模板#create,呈现head:no_content”Rails 5
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了“父必须存在”和“没有为CommentsController找到模板#create,呈现head:no_content”Rails 5相关的知识,希望对你有一定的参考价值。
我用“新评论”表单得到了一个奇怪的错误。
首先,当我提交评论时 - 我得到一个弹出窗口来保存文件(没有要保存的文件)。
但是,评论没有创建,因为我的应用程序认为其中一个评论的属性必须存在,而不需要。
提交时这是我的错误:
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()