使用相同的表单创建 Rails 个对象

Creating Rails objects using same form

我正在构建一个应用程序来管理债务,并尝试使用相同的表单创建三个对象。

模型是;

  1. 债务(欠款)

    class Debt < ActiveRecord::Base
      belongs_to :user
      belongs_to :creditor
      belongs_to :debtor
      accepts_nested_attributes_for :debtor, :creditor
    end
    
  2. 债务人(欠债的人)

    class Debtor < ActiveRecord::Base
      belongs_to :user
      has_many :debts
    end
    
  3. 债权人(欠债的人)

    class Creditor < ActiveRecord::Base
       belongs_to :user
       has_many :debts
    end
    

我正在使用新的债务表格,并希望显示债务人和债权人的字段。因此,当创建新债务时,关联的债务人和债权人也会创建。

我已经查看了文档,但是无法在表单上显示债务人或债权人的字段。

这是表格

 <%= simple_form_for(@debt) do |f| %>
 <%= f.error_notification %>

 <!-- Debt fields -->
 <div class="form-inputs">
   <%= f.association :user %>
   <%= f.input :amount %>
   <%= f.input :commission %>
   <%= f.input :invoice_issued %>
   <%= f.input :invoice_date %>
   <%= f.input :status %>
   <%= f.input :details %>
</div>

<!-- Debtor Fields -->
 <ul>
  <%= f.fields_for :debtor do |debtor_form| %>
   <li>
    <%= debtor_form.association :user %>
    <%= debtor_form.input :business_name %>
    <%= debtor_form.input :abn %>
    <%= debtor_form.input :first_name %>
    <%= debtor_form.input :last_name %>
    <%= debtor_form.input :email %>
    <%= debtor_form.input :mobile_number %>
    <%= debtor_form.input :phone_number %>
  </li>
 <% end %>
 </ul>

 <div class="form-actions">
  <%= f.button :submit %>
 </div>
 <% end %>

感谢任何帮助。

编辑

create_table "debts", force: :cascade do |t|
 t.integer  "user_id"
 t.float    "amount"
 t.float    "commission"
 t.boolean  "invoice_issued"
 t.date     "invoice_date"
 t.string   "status"
 t.text     "details"
 t.datetime "created_at",     null: false
 t.datetime "updated_at",     null: false

结束

您需要在控制器中建立债务的债务人或债权人:

#controller
def new
  @debt = Debt.new
  @debt.build_debtor
  @bebt.build_creditor
end