2010-12-11 15 views
26

Finalmente se mudó a Rails 3 para un nuevo proyecto y ya se encuentra con un problema de novato.fields_for not rendering - rails 3

Intentando hacer una forma simple anidada.

2 modelos: lista de tareas y

modelo Lista

class List < ActiveRecord::Base 
    has_many :tasks, :dependent=>:destroy 
    accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? } 
end 

Tarea Modelo

class Task < ActiveRecord::Base 
    belongs_to :list 

end 

Controlador Lista

def new 
    @list = List.new 
    3.times{ @list.tasks.build } 
end 

listas/new.html.erb

<% form_for :list, :url=>{:action=>"create"} do |f| %> 
    <%= f.text_field :name, :class=>'big' %> 
    <%= f.label :name, "ex: Today's Todos, Christmas List" %> 

    <% f.fields_for :tasks do |builder| %> 
     <p> 
      <%= builder.label :name, "Task" %> 
      <%= builder.text_field :name %> 
      <%= builder.check_box :_destroy %> 
     </p> 
    <% end %> 

    <p><%= submit_tag "Create List", :id => "submit", :name => "submit", :class => "form_submit", :disabled => false, :disable_with => "Please wait..." %></p> 

<% end -%> 

Uso depuración @List puedo ver las 3 tareas que he creado en mi controlador, pero fields_for no quede inutilizada.

¿Alguna idea?

Respuesta

80

En los rieles 3, debe usar <%= en lugar de para form_for y fields_for. A ver si eso ayuda.

+0

que fija ese problema ... ahora sólo 1 de 3 text_fields tareas se están presentando ... alguna idea? – Ryan

+0

nm ... lo obtuve. No estaba usando la variable de instancia que creé en form_for – Ryan

+2

Genial, me alegro de que hayas resuelto los problemas. Es posible que desee consultar https://github.com/plataformatec/simple_form o https://github.com/justinfrench/formtastic en el futuro para que los formularios de rieles sean más fáciles de manejar. – bowsersenior

0

En el controlador de la lista en la acción nueva que hay que añadir

def new 
    @list = List.new 
    3.times{ 
    @tasks = @list.tasks.build 
    } 
end