Параметр отсутствует или значение пусто: хранение сущности с отношениями в 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 и, следовательно, не передается в ключе комментария внутри параметров.

Другие вопросы по тегам