2010-09-16 6 views
7

Ich versuche, eine verschachtelte Form mit Formtastic zu erstellen. Ich habe meinen Code unten eingefügt, stoße aber auf einige Probleme, die ich unten aufgeführt habe. Irgendwelche Vorschläge? Vielen Dank.Verwendung von semantic_fields_for von Formtastic mit einer has_many-Verknüpfung

# 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. Ein Benutzer standardmäßig erstellt wird, wenn ein Start gespeichert wird. Wie zeige ich nur die neu erstellten Datensätze an und nicht die vorhandenen?

  2. Wenn # 1 nicht möglich ist, wie aktualisiere ich den vorhandenen Datensatz? Ich habe update_only auf accresents_nested_attributes_for gesetzt, aber ein neuer Datensatz wird noch erstellt.

  3. Ich mache 2 x {@ home.home_members.build} in der Controller-Aktion. Wenn ich die Größe von @ home.home_members drucke, bekomme ich 3 (ein existiert bereits) wie erwartet. Warum zeigt das Formular nur 2 Sätze von Eingaben an, von denen eine mit den vorhandenen home_member-Daten gefüllt ist?

+1

brauchen Sie noch Antworten auf diese Frage? Wenn Sie eine Lösung gefunden haben, könnten Sie die Antwort selbst veröffentlichen? –

Antwort

4

gut Frage 1) zeigen die neu erstellte Objekte

nur zu beantworten
# 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 %>