Не знаю, что делать на данный момент, я следовал учебному пособию, но не могу получить даже комментарии для публикации в настоящее время.Они работают просто отлично, если я возьму все соотношения / упоминания из моделей.Но я хотел бы создать функциональность для вложенной системы комментирования, где можно комментировать комментарии.Вот все соответствующие файлы + ошибки.
Новая форма комментария находится внутри страницы комментариев new.html.erb
<div class='form-signin col-md-6 offset-md-3'>
<%= form_with url: post_comments_path, scope: "comment", local:true do |form| %>
<div class="form-group">
<%= form.label :body %>
<%= form.text_area :body, :class => "form-control-lg" %>
</div>
<div class="form-group">
<%= form.hidden_field :user_id, :value =>current_user.id %>
<%= form.hidden_field :post_id, :value => @post.id %>
<%= form.hidden_field :commentable_id, :value => @comment.id %>
<%= form.hidden_field :commentable, :value => @comment.body %>
</div>
<%= form.submit %>
<% end %>
</div>
Модель комментариев
class Comment < ApplicationRecord
belongs_to :post
belongs_to :user
belongs_to :commentable, polymorphic: true
has_many :comments, as: :commentable
paginates_per 5
end
Контроллер комментариев:
def create
@post = Post.find(params["post_id"])
user_id = comment_params["comment"]["user_id"]
body = comment_params["comment"]["body"]
@comment = Comment.new(post_id: @post.id, user_id: user_id, body: body )
if @comment.save
redirect_to post_path(@post), method: :patch, notice: 'Reply successfully created.'
else
redirect_to post_path(@post), notice: @comment.errors.messages
end
end
def comment_params
params.permit(:post_id, comment: [:user_id, :body] )
end
Ошибка, которую я получаю, когда пытаюсь оставить комментарий:
Журналы сервера:
Started GET "/posts/1" for 127.0.0.1 at 2018-09-27 16:33:56 -0400
Processing by PostsController#show as HTML
Parameters: {"id"=>"1"}
Post Load (0.2ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ app/controllers/posts_controller.rb:40
Rendering posts/show.html.erb within layouts/application
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 143], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:21
User Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 19], ["LIMIT", 1]]
↳ app/views/posts/show.html.erb:45
(0.4ms) SELECT COUNT(*) FROM "comments" WHERE "comments"."commentable_id" = $1 AND "comments"."commentable_type" = $2 [["commentable_id", 1], ["commentable_type", "Post"]]
↳ app/views/posts/show.html.erb:49
CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 19], ["LIMIT", 1]]
↳ app/views/posts/show.html.erb:49
CACHE User Load (0.0ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2 [["id", 19], ["LIMIT", 1]]
↳ app/views/posts/show.html.erb:54
Comment Load (0.4ms) SELECT "comments".* FROM "comments" WHERE "comments"."commentable_id" = $1 AND "comments"."commentable_type" = $2 [["commentable_id", 1], ["commentable_type", "Post"]]
↳ app/views/posts/show.html.erb:71
Rendered posts/show.html.erb within layouts/application (11.8ms)
Completed 200 OK in 49ms (Views: 42.8ms | ActiveRecord: 1.7ms)
Как я уже говорил ранеекомментарии прекрасно работают без комментируемой системы, но я хотел бы добавить эту функциональность, если это возможно, с моей текущей структурой.Для этой функции не установлено никаких драгоценных камней.