Я хотел, чтобы пользователи могли добавлять комментарии к рецептам. Я также хотел, чтобы пользователи могли комментировать эти комментарии. Кажется, он работает, но, возможно, слишком много запросов происходит. Я исследовал и видел много тесно связанных статей, но, похоже, ни одна из них не помогает в решении проблемы. Независимо от того, как я изменил это, это не работает. Я могу сделать столько комментариев к комментариям, сколько захочу, но как только к рецепту будет добавлено несколько комментариев, произойдет сбой. Это как у меня может быть один или другой, но не оба, или он потерпит крах. Вот что у меня есть:
comment.rb
class Comment < ApplicationRecord
belongs_to :commentable, polymorphic: true
has_many :comments, as: :commentable
end
recipe.rb
class Recipe < ApplicationRecord
has_many :comments, as: :commentable
recipes/show.html.erb
<div class="">
<h5>Comments:</h5>
<div class="comment-form">
<hr />
<h3 class="subtitle is-3">Leave a reply</h3>
<%= render @recipe.comments %>
</div>
<%= simple_form_for([@recipe, @recipe.comments.build]) do |f| %>
<div class="field">
<div class="control">
<%= f.input :content, input_html: { class: 'input' }, wrapper: false, label_html: { class: 'label' } %>
</div>
</div>
<%= f.button :submit, 'Leave a reply', class: "button is-primary" %>
<% end %>
</div>
_comments.html.erb
<div class="box">
<article class="media">
<div class="media-content">
<div class="content">
<p>
<strong><%= comment.content %></strong>
</p>
</div>
</div>
</article>
</div>
<div>
<div class="">
<%= form_for([comment, comment.comments.build]) do |f| %>
<%= f.hidden_field :recipe_id, value: @recipe.id %>
<%= f.text_area :content, placeholder: "Add a Reply" %><br/>
<%= f.submit "Reply" %>
<% end %>
</div>
<div>
<%= render comment.comments %>
</div>
</div>
Если я удалю <%= render comment.comments %>
Это работает, но, очевидно, не покажет мне комментарии к другим комментариям. Если я сделаю только 1 комментарий к рецепту, я могу комментировать этот комментарий столько раз, сколько захочу, без проблем. Если я добавлю еще один комментарий к рецепту, он вылетает. Если я ввожу сообщение, оно работает и показывает, что каждый комментарий присутствует, пока не будет пройден каждый комментарий, а затем вылетает. Я знаю, что для этого есть жемчужины, но я учусь и очень хотел построить с нуля и понять, что происходит. Заранее спасибо!