2010-07-16 48 views
6

Tôi có một mô hình Timesheet, một mô hình Chạy và một mô hình Vận động viên.Collection_select trong một mẫu mô hình lồng nhau

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 

Chạy được lồng dưới bảng chấm công, và tôi muốn tạo ra một vài chạy trên các hình thức tương tự tôi tạo ra một Timesheet, như trong này railscast

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

Trên mẫu Timesheet của tôi, tôi gặp vấn đề với collection_select của tôi (một danh sách các tên vận động viên điền vào trường: athlete_id trong bảng 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 %> 

Có thể cư: Trường athlete_id của một Run với một collection_select như trình bày ở trên, trong một hình thức lồng nhau cho Timesheet, hoặc tôi đang thiếu cái gì?

Trả lời

15

Dường như bạn không tạo ra bộ sưu tập chọn vào xây dựng hình thức, hãy thử một cái gì đó như thế này:

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

Cảm ơn bạn! Điều này làm việc hoàn hảo và đã cứu tôi rất nhiều thất vọng. – jktress

Các vấn đề liên quan