Понимание того, как работают формы для связанных таблиц

Я новичок в ror. Это мой вопрос. Я использую команду генерации скаффолда для создания двух таблиц раздела и ученика. Столбцы - это раздел - имя: строка ученик - имя: строка section_id: целое число

в модели

section.rb

has_many :students

в модели

student.rb

belongs_to :section

Теперь в новой форме учащегося нужно заполнить два столбца: имя и раздел. Чтобы создать нового учащегося, нужно ли мне знать идентификатор каждого раздела, к которому он принадлежит? Есть ли другой способ получить форму, в которой я ввожу имя студента и ее раздел? Поможет ли изменение столбца соединения на section_name в таблице студентов?


person Isabella    schedule 14.12.2011    source источник


Ответы (3)


Вам не нужно изменять имя связанного столбца в таблице. ваша модельная ассоциация верна.

1) Да, вы должны знать идентификатор каждого раздела для создания студента. 2) ваша форма должна выглядеть так

<%= f.collection_select(:section_id, @sections,:id,:name) %>

и в действии create контроллера ученика.

@student = Student.new(params[:students])
@student.save

здесь @sections = Section.all

person HiteshRawal    schedule 14.12.2011

Что-то типа:

@section.students.create(:name => 'joe')

Более подробная информация.

person demas    schedule 14.12.2011

Предполагая, что ваша форма дает вам: name и: section_id, вы можете просто сделать это в командах student # create.

def create
  @student = Student.create(:name => params[:name], 
                            :section_id => params[:section_id])
end
person Eric Yang    schedule 14.12.2011