Использование semantic_fields_for Formtastic с ассоциацией has_many

Я пытаюсь создать вложенную форму с помощью formtastic. Я включил свой код ниже, но столкнулся с некоторыми проблемами, которые я также перечислил ниже. Какие-либо предложения? Спасибо.

# Home model
class Home < ActiveRecord::Base
  has_many :home_members
  accepts_nested_attributes_for :home_members, :reject_if => :all_blank, :update_only => true, :allow_destroy => true
end


# Form builder in members/new.html.erb
<%= semantic_form_for @home, :url => home_members_path(@home), :html => { :method => :post }, :remote => true do |f| %>
  <%= f.inputs do %>
    <%= f.semantic_fields_for :home_members do |h| %>
    <%= h.input :name %>
    <%= h.input :email %>
    <%= h.input :birthday, :as => :string %>
  <% end %>
<% end %>

# members_controller's new method; @home is set in a before filter
def new
  2.times{ @home.home_members.build }
end
  1. Пользователь по умолчанию создается при сохранении дома. Как сделать так, чтобы в форме отображались только вновь созданные записи, а не существующие?

  2. Если № 1 невозможен, как мне обновить существующую запись? Я установил update_only для accepts_nested_attributes_for, но новая запись все равно создается.

  3. Я делаю 2.times{@home.home_members.build} в действии контроллера. Когда я печатаю размер @home.home_members, я получаю 3 (один уже существует), как и ожидалось. Почему форма отображает только 2 набора входных данных, один из которых заполняется существующими данными home_member?


person Eric M.    schedule 16.09.2010    source источник
comment
тебе еще нужны ответы на этот вопрос? Если вы нашли решение, не могли бы вы опубликовать ответ самостоятельно?   -  person Jeppe Liisberg    schedule 04.02.2011


Ответы (2)


хорошо ответить на вопрос 1) показывать только вновь созданные объекты

# Form builder in members/new.html.erb
<%= semantic_form_for @home, :url => home_members_path(@home), :html => { :method => :post }, :remote => true do |f| %>
  <%= f.inputs do %>
    <%= f.semantic_fields_for :home_members do |h| %>
    <% if h.object.new_record? %>
      <%= h.input :name %>
      <%= h.input :email %>
      <%= h.input :birthday, :as => :string %>
    <% end %>
  <% end %>
<% end %>
person Ingo    schedule 03.04.2011

Раньше я успешно использовал кокон. https://github.com/nathanvda/formtastic-cocoon

person lambdabob    schedule 25.05.2012