Как построить форму с некоторым количеством идентичных полей в RoR?

Есть задача:
Вывести на страницу форму с контактами - на каждый контакт по три поля (имя, телефон, вес) + скрытое поле с id.

В соответствии с гайдом rails делаю на каждый контакт form builder:
- @contacts.each do |contact|
  - fields_for contact, index: contact.id do |contact_form|
    %tr                
      %td
        = contact_form.hidden_field_tag(:id, contact.id, class: 'form-control')
        = contact_form.text_field_tag(:phone, contact.phone, class: 'form-control')
      %td
        = contact_form.text_field_tag(:name, contact.name, class: 'form-control')
      %td
        = contact_form.text_field_tag(:weight, contact.weight, class: 'form-control')

Но получаю undefined method `hidden_field_tag' for #

при этом, если не использовать fields_for, то форма строится, но отправляется, конечно, только последнеяя группа полей.

Не могу разобраться где я ошибся.
  • Вопрос задан
  • 2436 просмотров
Решения вопроса 1
ezhikov
@ezhikov Автор вопроса
Я использовал не тот метод. Вместо hidden_field_tag нужно было использовать hidden_field. Как всегда меня сгубила невнимательность.

В итоге код получился такой:
- @contacts.each do |contact|
  = fields_for "contact[#{contact.id}]" do |contact_form|
    %tr                
      %td
        = contact_form.hidden_field(:id, :value => contact.id)
        = contact_form.text_field(:phone, :value => contact.phone, :class => "form-control")
      %td
        = contact_form.text_field(:name, :value => contact.name, :class => "form-control")
      %td
        = contact_form.text_field(:weight, :value => contact.weight, :class => "form-control")
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы