ruby-on-rails – 接受has_many关系的嵌套属性

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 接受has_many关系的嵌套属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
以下是我的两个模型类
  1. class Patient < ActiveRecord::Base
  2. belongs_to :user,:dependent => :destroy
  3. has_many :enrollments,:dependent => :destroy
  4. has_many :clients,:through => :enrollments
  5.  
  6. accepts_nested_attributes_for :user
  7. accepts_nested_attributes_for :enrollments
  8. attr_accessible :user_attributes,:enrollments_attributes,:insurance
  9. end
  10.  
  11. class Enrollment < ActiveRecord::Base
  12. belongs_to :client
  13. belongs_to :patient
  14. attr_accessible :client_id,:patient_id,:active
  15. end

在我的患者表格中,我希望有一个多选框,可以将患者分配给客户.有没有办法可以做到这一点,所以我没有任何逻辑
控制器除外

  1. @patient = Patient.new(params)
  2. @patient.save

我试过这个:

  1. <%= patient_form.fields_for :enrollments do |enrollments_fields| %>
  2. <tr>
  3. <td class="label">
  4. <%= enrollments_fields.label :client_id %>:
  5. </td>
  6. <td class="input">
  7. <%= enrollments_fields.collection_select(:client_id,@clients,:id,:name,{},:multiple => true) %>
  8. </td>
  9. </tr>
  10. <% end %>

但它只保存了第一个客户端.如果我删除多个部分,它的功能,但我只能选择1个客户端!

select的html值是:

解决方法

我最终做了以下事情:
  1. <%= check_Box_tag "patient[client_ids][]",client.id,@patient.clients.include?(client) %>

我不确定这是否是最好的方式…任何评论(我必须更新我的模型以包括attr_accessible:client_ids

猜你在找的Ruby相关文章