Параметр отсутствует или значение пусто: хранение сущности с отношениями в Rails 4
В моем приложении есть вопросы, на которые есть много ответов, и на которые есть много комментариев.
Тем не менее, у меня возникли проблемы при попытке сохранить комментарий ответа, я получаю эту ошибку:
param is missing or the value is empty: comment
Выделенная строка это:
params.require(:comment).permit(:description)
Представление, в котором создается комментарий, является представлением представления вопроса, поэтому в QuestionController
сначала я загружаю comment
:
def show
@answer = Answer.new
@comment = Comment.new
end
И вот так выглядит вид:
<p>
<strong>Answers:</strong>
</p>
<% unless @question.answers.empty? %>
<ul class="list-groups">
<% @question.answers.each do |answer| %>
<li class="list-group-item">
<h4><%= answer.description %></h4>
<hr>
<%= form_for(@comment, html: { class: "form-inline" }) do |f| %>
<div class="form-group">
<%= text_field_tag 'description', nil, placeholder: 'Comment this answer', class: "form-control" %>
</div>
<div class="form-group">
<%= f.submit "Comment", class: "btn btn-default" %>
</div>
<input id="answer_id" name="answer[id]" type="hidden" value="<%= answer.id %>">
<% end %>
</li>
<% end %>
</ul>
<% else %>
Что случилось?
1 ответ
Решение
Вместо:
<%= text_field_tag 'description', nil, placeholder: 'Comment this answer', class: "form-control" %>
Использование:
<%= f.text_field :description, placeholder: 'Comment this answer', class: "form-control" %>
Вам нужно использовать f
(объект form_for) для привязки атрибутов объекта (@comment
) вы пытаетесь создать форму, поэтому она не создается должным образом в HTML и, следовательно, не передается в ключе комментария внутри параметров.