Я получаю странную ошибку с формой "Новый комментарий".
Во-первых, когда я отправляю комментарий, я получаю всплывающее окно для сохранения файла (нет файла для сохранения).
Однако комментарий не создается, потому что мое приложение считает, что один из атрибутов комментария должен существовать, когда это не нужно.
Это моя ошибка при отправке:
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 %>