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

Я новичок в Рор. Это мой вопрос.Я использую команду generate scaffold для создания двух таблиц section и student.The столбцы: section - name: string student - name: string section_id: integer

в модели

section.rb

has_many :students

в модели

student.rb

belongs_to :section

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

Ответы [ 3 ]

0 голосов
/ 14 декабря 2011

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

def create
  @student = Student.create(:name => params[:name], 
                            :section_id => params[:section_id])
end
0 голосов
/ 14 декабря 2011

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

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

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

и в действии создания контроллера студента.

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

здесь @sections = Section.all

0 голосов
/ 14 декабря 2011

Что-то вроде:

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

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

...