2010-07-16 15 views
6

के भीतर चयन करें मेरे पास टाइम्सशीट मॉडल, एक रन मॉडल और एक एथलीट मॉडल है।संग्रह_एक नेस्टेड मॉडल फॉर्म

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 

रन Timesheets अंतर्गत नेस्टेड रहे हैं, और के रूप में इस railscast

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

में दिखाया गया है मेरा समय पत्रक प्रपत्र पर मैं, एक ही रूप में मैं एक समय पत्रक बनाने पर कुछ रन बनाना चाहते हैं, मैं कर रहा हूँ मेरे collection_select (एथलीट नामों का एक ड्रॉप डाउन जो रन करता है: रन तालिका में athlete_id फ़ील्ड) को एक समस्या का सामना करना पड़ रहा है। जैसा कि ऊपर दिखाया एक collection_select के साथ एक रन के athlete_id क्षेत्र, समय पत्रक के लिए एक नेस्टेड प्रपत्र के भीतर, या मैं कुछ याद आ रही है:

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

यह पॉप्युलेट करने के लिए संभव है?

उत्तर

15

ऐसा लगता है कि आप नहीं बना रहे की तरह संग्रह प्रपत्र बिल्डर पर का चयन करें, कुछ इस तरह का प्रयास करें:

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

धन्यवाद! यह पूरी तरह से काम किया और मुझे इतना निराशा बचाया। – jktress

संबंधित मुद्दे