Rails表单为父对象创建多个关联对象

时间:2017-12-01 21:09:37

标签: ruby forms activerecord ruby-on-rails-5

我想在我的Rails应用程序中创建一个表单,这个表单允许我使用我正在创建的主对象创建多个关联对象。我的模型如下:

01 00 DA 3D 07 09 46 6F 73 73 69 6C 03 03 12 18

我希望能够在创建Bucket对象时创建多个Resource对象。因此,当我去创建一个新的Bucket时,我希望能够在同一个表单上创建多个Resource对象。

我希望这是有道理的!

1 个答案:

答案 0 :(得分:0)

您可以使用accepts_nested_attributes_for来实现这一目标。

class Bucket < ApplicationRecord  
  has_many :resources  
  belongs_to :user  
  accepts_nested_attributes_for :resources
end

class Resource < ApplicationRecord  
  belongs_to :model  
  has_attached_file :artifact  
end

然后您可以通过发送此格式的发布请求来创建您的存储桶。

bucket: {
  resources_attributes: [
    // resource objects go here
  ]  
}

或使用fields_for如果您在前端部分使用rails

<%= form_for @bucket do |bucket_form| %>  
  //  bucket form fields go here

  <%= bucket_form.fields_for :resources do |resource_fields| %>  
    // resource fields go here
  <% end %>  
<% end %>

您可以查看文档以获取fields_for的更多选项。