创建嵌套模型表单

Ell*_*iot 4 ruby ruby-on-rails nested-forms ruby-on-rails-3

我正在尝试构建一个多模型表单 - 但其中一个问题是,我需要链接表单中的模型.

例如,假设我拥有的表单具有以下模型:用户,配置文件

在创建新用户时,我想同时创建一个新的配置文件,然后将这两个配置文件链接起来.问题是,如果还没有创建它们,它们还没有ID - 那么如何分配链接值?

谢谢!

-Elliot

我注意到,有些人喜欢这个 - 要查看更多关于链接两个模型的信息,请查看我的第二个问题,它有一个答案:以多模型形式链接两个模型

Sco*_*ott 5

实现所需结果的一种方法是,您可以创建一个利用Rails中嵌套属性支持的表单:

<%= form_for(@user) do |f| %>
  <%= f.label :my_user_attribute %>
  <%= f.text_field :my_user_attribute %>

  <%= f.fields_for :profile do |fp| %>
    <p>
      <%= fp.label :my_profile_attribute %>
      <%= fp.text_field :my_profile_attribute %>
    </p>
  <% end %>    

  <%= f.submit %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

您还需要将以下内容添加到User类:

accepts_nested_attributes_for :profile
Run Code Online (Sandbox Code Playgroud)

您可以在此处阅读有关Active Record Nested Attributes的更多信息.您可以在此处阅读有关ActionView表单助手的更多信息(在页面中搜索"嵌套属性示例").

如果您使用此方法,以及两个模型上的良好验证,您将不必担心跟踪数据库ID,因为两者将由ActiveRecord同时创建(但直到两个模型对象都有效).