使用form_for同时创建两个记录

时间:2013-11-16 20:37:21

标签: ruby-on-rails ruby-on-rails-4 form-for

我有两个不同的模型叫做Infraction and Lock。这些属于我的用户模型,用户has_one锁定和many违规行为。

管理员可以在用户上创建锁定,并为他们提供违规行为,但是对于严重违法行为,有必要提供违规行为并同时对用户进行锁定。

为了节省管理员不必点击多个表单,我想我可以将所有内容都滚动到一个表单中:同时在同一个用户上构建一个Infraction和一个Lock,但我不知道该怎么做它。在我意识到它只能占用一个对象之前,我正在考虑使用form_for块来实现它。

有没有人知道如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

查看fields_for helper和accepts_nested_attributes_for。两者的结合将满足您的需求。

示例:

<%= form_for @person do |person_form| %>
  ...
  <%= person_form.fields_for :address do |address_fields| %>
    ...
    Delete: <%= address_fields.check_box :_destroy %>
  <% end %>
  ...
<% end %>

你的班级类似于:

class Person < ActiveRecord::Base
  has_one :address
  accepts_nested_attributes_for :address
end