Rails - скрытое поле в частичной форме - ошибка или нет рендеринга

chap_comment_controller.rb содержит

def create
    @chap_comment = current_user.chap_comments.build(chap_comment_params)
    if @chap_comment.save
      flash[:success] = "Comment created!"
    else
      render fallovercoswrong
    end
  end

У меня есть частичное - _chap_comment_form.html.erb

<%= form_for(@chap_comment) do |f| %>
  <%= f.text_area :comment_text, placeholder: "Comment..." %> </div>
  <%= f.hidden_field :chapter_id, @chapter.id %>
  <%= @chapter.id %>is chapter id
  <%= f.submit "Post" %>
<% end %>

: chap_comment принадлежит_to: пользователь и: глава

Скрытое поле вызывает проблемы. Код выше возвращает ошибку

undefined method `merge' for 1:Fixnum

Изменение строки на

<%= f.hidden_field_tag .....

возвращается

undefined method `hidden_field_tag' for #<ActionView::Helpers::FormBuilder:0x007fa33165f7a8>

а также

<%= hidden_field_tag ......

молча не удается поместить скрытое поле в визуализированный HTML. Какой лучший способ исправить это?

1 ответ

Решение

Заменить:

<%= f.hidden_field :chapter_id, @chapter.id %>

С:

<%= f.hidden_field :chapter_id, value: @chapter.id %>

hidden_field ожидает хэш в качестве второго аргумента

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