Adding records to a nested model through an association

Not sure if the subject is correct for what I am trying to do…

I am working on a School application and I added an Attendance section

There is an attendance record that is associated to a student record

The student record has an associated model called notes…

What I would like to be able to do is add notes to the student through the attendance record…

My Attendance record belongs_to :student

My Student record has_many :attendances

My Student record has_many :notes

I can access Attendance.student.notes just fine, but when I try to add notes through a nested form it doesn’t like that…

Also just tried adding has_many :notes, through: :student and now I can access Attendance.notes, however when I add

<%= f.fields_for :notes %>

<%= f.link_to_add “Add Note”, :notes, class: ‘btn btn-xs btn-primary btn-padded’ %>

I get an error no block given(yield)

Any suggestions on how to code the nested form? Is this a routes issue?

John

Not sure if the subject is correct for what I am trying to do...

I am working on a School application and I added an Attendance section

There is an attendance record that is associated to a student record

The student record has an associated model called notes...

What I would like to be able to do is add notes to the student through the attendance record...

My Attendance record belongs_to :student My Student record has_many :attendances My Student record has_many :notes

I can access Attendance.student.notes just fine, but when I try to add notes through a nested form it doesn't like that...

Also just tried adding has_many :notes, through: :student and now I can access Attendance.notes, however when I add

      <%= f.fields_for :notes %>

You need to add a 'do' at the end of the previous line. Without that, and...

      <%= f.link_to_add "Add Note", :notes, class: 'btn btn-xs btn-primary btn-padded' %>

an end here to close the block, you're not giving a black to the fields_for macro. That's what the error means.

Walter

That’s the way all my other nests are defined and they work fine… I think the problem is I am adding a nest from a different model than I am actually working on…

The way the nests are working now is it should render the file _note_fields.html.erb but it acts like it is not finding that file which tells me the fields_for is looking for a different name due to the way it is nested

I figured it out… Didn’t have a accepts_nested_attributes_for :notes in my attendance model… Duh !!!

However when I try to write I get an error

Cannot modify association ‘Attendance#notes’ because the source reflection class ‘Note’ is associated to ‘Student’ via :has_many.

Is this the proper relationship for this to work? It looks right to me…

What I want to do is add notes to a student through the Attendance Edit form

class Attendance < ActiveRecord::Base

belongs_to :student

accepts_nested_attributes_for :student

has_many :notes, through: :student

accepts_nested_attributes_for :notes

end

class Student < ActiveRecord::Base

Also used through Attendance Edit

has_many :attendances, dependent: :destroy

has_many :notes, dependent: :destroy

accepts_nested_attributes_for :notes, allow_destroy: true

end

class Note < ActiveRecord::Base

belongs_to :student

end