如何在 Ruby on Rails 中管理嵌套字段的多对多关系

Posted

技术标签:

【中文标题】如何在 Ruby on Rails 中管理嵌套字段的多对多关系【英文标题】:How to manage many to many relation for nested fields in Ruby on Rails 【发布时间】:2019-04-25 11:20:41 【问题描述】:
class Resume < ActiveRecord::Base
  has_many :user_skills, :dependent => :destroy
  accepts_nested_attributes_for :user_skills, :allow_destroy => true, :reject_if => :all_blank 
end

class UserSkill < ActiveRecord::Base
  belongs_to :resume
  has_and_belongs_to_many :technologies
end

class Technology < ActiveRecord::Base
  has_and_belongs_to_many :user_skills
end


<%= nested_form_for([:student, @resume], validate: true, :html =>  :multipart => true, class: "full-width" ) do |f| %>


 ------------------------------
      Resume fields
 ------------------------------      

 <h5>User Skills</h5>
<%= f.fields_for :user_skills do |us| %>

  <%= us.label :academic_years, "Academic Years" %>
  <%= us.text_field :academic_years %>

  <%= us.label :professional_years, "Professional Years" %>
  <%= us.text_field :professional_years %>

  <%= us.fields_for :technologies do |tech| %>

     <%= tech.collection_select :name, Technology.all, :id, :name,  prompt: "Select Technology",  :multiple => true, :size => 10 %> 

  <% end %>

   <%= us.link_to_remove "Remove", class: "btn btn-small red right" %>

现在我不知道如何在控制器中管理此记录以进行创建和更新,而且我也不知道如何显示此记录...。如果您了解我的问题,那么请为我提供更新和创建恢复控制器的控制器代码,并帮助我显示恢复数据。

【问题讨论】:

【参考方案1】:

我认为您使用的是 Ryan Bates 的旧 nested_form gem。您应该使用最新的,例如 simple_form 或来自 ruby-toolbox.com 的其他人

【讨论】:

以上是关于如何在 Ruby on Rails 中管理嵌套字段的多对多关系的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby on Rails 4.2 中使用 Cocoon gem 嵌套表单

ruby-on-rails - 嵌套资源问题

如何使用用户定义的字段数制作表单? - Ruby on Rails

在 Ruby on Rails 中自动增加非主键字段

Ruby on Rails:嵌套命名范围

尝试在 ruby​​ on rails 中创建嵌套资源时,“表单中的第一个参数不能包含 nil 或为空”