我希望对按钮执行单击操作,以便为连接表添加资源。有几种方法可以在控制台中执行此操作,但我无法在生活中找出如何在控制台外实现此功能。
这是一个模仿我当前模型的例子:
class Student < ActiveRecord::Base
has_many :reports
has_many :schools, through: :reports
end
class School < ActiveRecord::Base
has_many :reports
has_many :students, through: :reports
accepts_nested_attributes_for :reports
end
class Report < ActiveRecord::Base
belongs_to :student
belongs_to :school
accepts_nested_attributes_for :student
accepts_nested_attributes_for :school
validates :student_id, presence: true
validates :school_id, presence: true
end
此方法返回属于学生的所有成绩单(学生已存在) 我的数据库):
@student.reports
此方法返回学生参加的所有学校:
@student.schools
我可以通过以下方式将现有学校添加/关联到学生:
@school = School.find(params[:id])
if student.present?
@student = Student.find(params[:id])
@student.schools << @school
请注意,单个报告与许多学生的关联是有意的。我现在的问题是如何让学生只需点击特定学校就可以将学校添加到他们的报告中?我的报告表(基本上是一个连接表)应该在click_action发生/发生时自动更新(这是一个将特定student_id与特定学校ID相关联的新行)。
一直试图解决这个问题,但由于某些原因没有取得进展。提前谢谢!
答案 0 :(得分:1)
嗯,首先,在您看来,您应该为每所学校举办javascript / DOM活动:
onclick(window.location.href = "<%= path_to_add_school_to_students(student,school) %>")
所以你只需点击一下。
在您的控制器中
student=Student.find(params[:student])
if student.schools.find(params[:school]).nil? # if school not already assigned
student.reports.create(:school_id => params[:school])
end