2010-09-16 11 views
7

Estoy tratando de crear una forma anidada usando formtastic. He incluido mi código a continuación, pero tengo algunos problemas que también he enumerado a continuación. ¿Alguna sugerencia? Gracias.Usando Semantic_fields_for de Formtastic con una asociación has_many

# 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. Se crea un usuario por defecto cuando una casa se guarda. ¿Cómo hago que el formulario muestre solo los registros recién creados y no el existente?

  2. Si el # 1 no es posible, ¿cómo realizo la actualización de registro existente? Tengo update_only establecido en accept_nested_attributes_for, pero aún se crea un nuevo registro.

  3. Estoy haciendo 2.times {@ home.home_members.build} en la acción del controlador. Cuando imprimo el tamaño de @ home.home_members obtengo 3 (uno ya existe) como se esperaba. ¿Por qué el formulario solo muestra 2 conjuntos de entradas, una de las cuales está poblada con los datos home_member existentes?

+1

¿Todavía necesita respuestas a esta pregunta? Si encontró una solución, ¿podría publicar la respuesta usted mismo? –

Respuesta

4

así responder a la pregunta 1) Mostrar sólo los objetos recién creados

# 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 %> 
Cuestiones relacionadas