2010-07-16 12 views
6

Ich habe ein Arbeitszeittabellenmodell, ein Run-Modell und ein Athlet-Modell.Collection_select in einem verschachtelten Modell

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 

Läufe werden unter Zeiterfassungen verschachtelt, und ich möchte ein paar Läufe auf der gleichen Form erstellen ich eine Zeittabelle erstellen, wie in diesem railscast

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

Auf meiner Timesheet Form, ich bin Ich habe ein Problem mit meinem collection_select (eine Drop-Down-Liste mit Athletennamen, die das Feld: athlet_id in der Tabelle "Runs" enthält).

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

Ist es möglich, die zu füllen: athlete_id Feld eines Run mit einem collection_select, wie oben gezeigt, innerhalb einer verschachtelten Form für Zeiterfassung, oder bin ich etwas fehlt?

Antwort

15

Es sieht aus wie Sie nicht die Sammlung auswählen, die auf dem Formular-Builder erstellen, versuchen, etwas wie folgt aus:

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

Thank you! Das hat perfekt funktioniert und mich so sehr frustriert. – jktress

Verwandte Themen