Использование semant_fields_for от Formtastic с ассоциацией has_many - PullRequest
7 голосов
/ 16 сентября 2010

Я пытаюсь создать вложенную форму, используя 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?

Ответы [ 2 ]

4 голосов
/ 25 мая 2012

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

4 голосов
/ 04 апреля 2011

хорошо, чтобы ответить на вопрос 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 %>
...