Как создать несколько форм для вложенной формы? - PullRequest
0 голосов
/ 12 августа 2010

Введение

У меня есть объект @organization, имеющий has_many: quick_facts

По сути, я хочу создать _form для каждого: quick_fact, но с одной кнопкой сохранения, которая сохраняет все quick_facts.

Мои две проблемы:

Первая проблема:

Мои quick_facts не заполняются их информацией. Они отображаются только как пустые для каждого быстрого_факта, который у меня есть.

Вторая проблема

Кнопка сохранения появляется на каждой форме

Моя грустная грустная попытка:

- for quick_fact in @organization.quick_facts
 - fields_for :quick_facts do |f|
   = f.error_messages :header_message => FORM_ERROR_HEADER_MESSAGE, :message => FORM_ERROR_MESSAGE
   = f.label :quick_fact, 'QuickFact'
   %br/
   = f.select :quick_fact, QUICK_FACTS, {}
   %br/
   = f.submit 'save', :class => 'button'

1 Ответ

1 голос
/ 12 августа 2010

Вы действительно хотите одну форму здесь, так как вы хотите отправить все сразу.

Вот что я бы порекомендовал:

Используйте частичное для визуализации метки и опции текста для быстрого факта (если вы хотите, чтобы это был текст).Вы хотите, чтобы эта часть отображалась один раз для быстрого факта, поэтому используйте опцию: collection в методе рендеринга, чтобы указать коллекции быстрых фактов.Каждое частичное будет иметь свою собственную локальную копию независимо от того, с каким Quickfact вы работаете, и будет также создана переменная с именем quickfact_counter.

Кроме того, вы захотите использовать опцию: locals для передачи формы в частичноев качестве локальной переменной, так что вы можете сделать f.label, f.text_area

Итак, в заключение, ваша новая форма будет выглядеть примерно так:

<% form_for @organization do |form| %>
  <%= render :partial => "partial_name", :collection => @organization.quick_facts, :locals => {:form => form} %>
  <%=form.submit 'save', :class => 'button'%>
<% end %>

Тогда ваша частичная воляпросто имейте

<%= form.label :quick_fact, 'QuickFact' %>
<%= form.text_field :quick_fact %>

Если вы хотите стать еще более изящным, вы можете использовать макет, чтобы визуализировать форму и отложить ее до частичного, но этого должно быть достаточно, чтобы начать работу.Возможность передавать коллекцию частичным является одной из моих любимых возможностей Rails.

...