Извините за смутное название.
Я хочу включить комментарии в системе постов / комментариев (в моем случае - корявые и корявые комментарии).
У меня есть таблица snag, таблица snag_comments, а a имеет много / принадлежит связи между комментариями snag и snag.
На странице показа для каждой загадки у меня есть форма рендеринга для загадочных комментариев. Когда я отправляю форму, она перенаправляет на корневой URL и ничего не сохраняет в таблицу snag_comments.
Это вся информация, которую я получаю:
Started POST "/snag_comments" for ::1 at 2019-05-07 12:53:16 +0100
Processing by SnagCommentsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"yBefFfnI289UXqQYzF37DBRGQSk2Uqu41/OQO/mnET9aj2S3OqjLmSGtgyyZkTDz0aSdKzSPofQNeSzx/UH3ng==", "snag_comment"=>{"snag_id"=>"183", "content"=>"sdfgfsdgsdfgds"}, "commit"=>"Send"}
<b>Resident Load (0.3ms)</b> <b>SELECT "residents".* FROM "residents" WHERE "residents"."id" = $1 ORDER BY "residents"."id" ASC LIMIT $2</b> [["id", 2], ["LIMIT", 1]]
Redirected to <a href="http://localhost:3000/" rel="nofollow noreferrer">http://localhost:3000/</a>
Filter chain halted as :redirect_residents rendered or redirected
Итак, мои параметры проходят. Я не знаю, почему он не сохраняется в базе данных.
В моем контроллере snags у меня есть:
def show
@snag_attachments = @snag.snag_attachments.all
@snag_comment = SnagComment.new
@snag_comments = SnagComment.where(snag_id: @snag.id)
end
И мой контроллер комментариев-загвоздок (который в настоящее время неполон, пока я выясняю эту разбитую часть):
class SnagCommentsController < ApplicationController
skip_authorization_check
before_action :set_parent
def create
@snag_comment = SnagComment.new(snag_comment_params)
if @snag_comment.save
redirect_to snags_path
end
end
private
def set_parent
@parent = @snag
end
def snag_comment_params
params.require(:snag_comment).permit(:content, :image, :snag_id,
:commenter, :first_name, :last_name)
end
end
Форма, которая отображается (views / snag_comments / _form):
<div class="snag-comment-form">
<%= simple_form_for snag_comment, url: snag_comments_path do |f| %>
<% if snag_comment.errors.any? %>
<div class="submission-errors">
<ul>
<% snag_comment.errors.full_messages.each do |error_msg| %>
<li>
<%= fa_icon "exclamation-circle" %>
<%= error_msg %>
</li>
<% end %>
</ul>
</div>
<% end %>
<%= f.hidden_field :snag_id, value: @snag.id %>
<%= f.input :content, label: false, as: :text, placeholder: t(".content"), maxlength: 1000, required: true, class: "snag-comment-content" %>
<div class="snag-comment-submit">
<%= f.submit t(".send"), class: "btn branded-btn send" %>
</div>
<% end %>
</div>
И откуда вызывается форма (просмотры / домовладельцы / приколы / шоу):
<%= render 'snag_comments/form', snag_comment: @snag_comment %>
Мне нужно, чтобы комментарии коряги находились вне модуля домовладельца, потому что он также должен быть доступен для модуля администратора (администратор и домовладелец могут комментировать одни и те же коряги).
Я не могу понять, почему форма перенаправляет, а не сохраняет. Я попытался удалить любое перенаправление и просто указать, что форма должна быть сохранена, но она все еще перенаправляет на корневой URL и не сохраняет, поэтому что-то должно быть записано между передачей параметров и фактическим сохранением.