У меня есть 3 объекта: статья, комментарий и пользователь. Я хочу, чтобы при публикации комментария в форме комментарий связывался со статьей И пользователем.
Когда у меня были только статья и комментарий, онбыло идеально: мы могли отправить форму, создать комментарий, и он был показан.
Форма комментария:
<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>
<p>
<%= form.label :body %><br>
<%= form.text_area(:body, {:class => 'form-control'} ) %>
</p>
<p>
<%= form.submit({:class => 'btn btn-success'}) %>
</p>
<% end %>
Создать метод CommentsController:
before_action :authenticate_user!
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.build(comment_params)
@comment.commenter = current_user
@comment.save
redirect_to article_path(@article)
end
И модели:
class Comment < ApplicationRecord
belongs_to :article
belongs_to :user
end
class User < ApplicationRecord
has_many :comments, dependent: :destroy
# Some devise things
end
class Comment < ApplicationRecord
belongs_to :article
belongs_to :user
end
Я хочу, чтобы комментарий помещался в базу данных, но фактический результат - ничего не сделано: комментарий просто игнорируется, и я не знаю почему.Я уже ищу здесь, я нашел тему с похожей проблемой, но решение было моим реальным кодом.