has_many的collection_select:通过关系表数据

问题描述

|| 我有这么可怕的模型:
class ParentalRelation < ActiveRecord::Base
  belongs_to :parent
  belongs_to :student
  belongs_to :counselor
  belongs_to :parental_relation_type
end

class ParentalRelationType < ActiveRecord::Base
  has_many :parental_relations
end

class Parent < ActiveRecord::Base
    has_many :parental_relations
    has_many :students,:through => :parental_relations
    has_many :counselors,:through=> :parental_relations
    has_many :parental_relation_types,:through=> :parental_relations
    belongs_to :user,:dependent=> :destroy
    belongs_to :occupation_type
    accepts_nested_attributes_for :user
end
父母关系类型如父亲,母亲等。推理是,一个顾问,一位父母和一个学生之间的父母关系是唯一的,并且顾问不应看到属于其他顾问的关系。 在controllers / parent_controller / edit操作中,我有
@parental_relation= ParentalRelation.find_by_counselor_id_and_student_id_and_parent_id(x,y,z)
在views / parent / _form.html.erb中,我有
<%= form_for @parent do |f| %>
在该表单中,我需要为ParentalRelationType.all选择collection_select并为该特定的父母关系选择父级的parental_relation_type_id,但是我找不到执行该操作的语法。 我尝试添加
<%= collection_select(@parental_relation,:parental_relation_type_id,ParentalRelationType.all,:id,:name) %>
在form_for下面,但是关系类型id为2,而是选择认值1。     

解决方法

        将此添加到父母/ _form
<%= fields_for @counselor_student_parent do |csp| %>
    <%= f.label :parental_relation_type_id %>
    <%= collection_select(:student_counselor_parent,:parental_relation_type_id,ParentalRelationType.all,:id,:name) %>
<% end %>
这给父母_控制器/新
def new
    @counselor= Counselor.find(params[:counselor_id])
    @student= Student.find(params[:student_id])
    @parent= @student.parents.build
    @parent_user= @parent.build_user
    @counselor_student_parent= @counselor.student_counselor_parents.build
end
    

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...