2010-07-16 25 views
6

Tengo un modelo de hoja de horas, un modelo de ejecución y un modelo de atleta.Collection_select dentro de un formulario de modelo anidado

class Timesheet < ActiveRecord::Base 
    has_many :runs, :dependent => :destroy 
    accepts_nested_attributes_for :runs 
end 


class Run < ActiveRecord::Base 
    belongs_to :timesheet 
    belongs_to :athlete 
end 

class Athlete < ActiveRecord::Base 
    has_many :runs 
end 

ejecuta están anidados bajo partes de horas, y yo quiero crear un par de carreras en la misma forma se crea un parte de horas, como se muestra en este railscast

class TimesheetsController < ApplicationController 
    def new 
    @timesheet = Timesheet.new 
    3.times { @timesheet.runs.build } 
    end 

En mi forma parte de horas, yo soy experimentando un problema con mi collection_select (un desplegable de nombres de atletas que puebla el campo: athlete_id en la tabla de ejecuciones).

<% form_for(@timesheet) do |f| %> 
    <%= f.error_messages %> 
    <%= f.label "Date" %> 
    <%= f.text_field :date %> 

    <% f.fields_for :runs do |builder| %> 
    <%= collection_select(:run, :athlete_id, Athlete.all(:order => 'name'), :id, :name, { :prompt => 'Select Athlete' }) %> 
    <% end %> 

<%= f.submit 'Create' %> 

<% end %> 

¿Es posible poblar el: Campo de athlete_id de una carrera con un collection_select como se muestra arriba, dentro de una forma anidada de parte de horas, o me estoy perdiendo algo?

Respuesta

15

Parece que no va a crear la colección seleccionar en el constructor de la forma, intentar algo como esto:

<% f.fields_for :runs do |r| %> 
    <%= r.collection_select(:athlete_id, Athlete.all(:order => 'name'), :id, :name, { :prompt => 'Select Athlete' }) %> 
<% end %> 
+1

Gracias! Esto funcionó perfectamente y me ahorró mucha frustración. – jktress

Cuestiones relacionadas