2010-07-16 17 views
6

Ho un modello di scheda attività, un modello di esecuzione e un modello di atleta.Collection_select in un modello di modello nidificato

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 

Corre sono annidati sotto schede attività, e voglio creare un paio di basi sullo stesso modulo creo una scheda attività, come mostrato in questa railscast

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

Sul mio modulo Timesheet, io sono riscontrare un problema con il mio collection_select (un elenco a discesa di nomi di atleti che popola il campo: athlete_id nella tabella Runs).

<% 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 %> 

E 'possibile popolare il: campo athlete_id di una corsa con un collection_select come indicato sopra, all'interno di un formato nidificato per la scheda attività, o mi sto perdendo qualcosa?

risposta

15

Sembra che tu non sta creando la collezione selezionare il costruttore di form, provare qualcosa di simile:

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

Grazie! Questo ha funzionato perfettamente e mi ha salvato così tanta frustrazione. – jktress

Problemi correlati