Rails: 如何在嵌套字段的表单中自定义字段顺序

Rails: How to customise the order of fields in a form with nested fields

我有一个表单可以使用 simple_nested_form_forsimple_fields_for 将属性保存到两个模型 Company 和嵌套模型 Address 中。

属性:

Company:
-legal form
-uploads

Address:
-name
-website

在我的表单中,我希望更改字段的顺序

-name (Address model)
-legal form (Company model)
-website (Address model)
-uploads (Company model)

因此 交换 form 属性和 nested_field 属性

我尝试了以下方法,但似乎没有用。

<%= simple_nested_form_for @company do |f| %>
    <%= f.simple_fields_for :address do |c| %>
        <%= c.input :name %> 
    <% end %>
    <%= f.input :legal_form %>
    <%= f.simple_fields_for :address do |c| %>
        <%= c.input :website %> 
    <% end %>
    <%= f.input :uploads %>
<% end %>

如何进行这项工作?

虽然看起来您的所有属性都不一致(您说上传是地址,网站在您的属性列表中是公司,但表格不匹配),但您的问题仍然有一个简单的解决方案.

嵌套字段依赖于它们的构建器来指示将它们放入参数哈希的哪一部分。因此只需调用您需要的构建器即可。

<%= simple_nested_form_for @company do |f| %>
  <%= f.simple_fields_for :address do |c| %>
    <%= c.input :name %> 
    <%= f.input :legal_form %>
    <%= c.input :website %> 
    <%= f.input :uploads %>
  <% end %>
  <%= f.submit %>
<% end %>

在每个需要公司字段的地方,您将调用构建器 f,在每个需要地址字段的地方,您将调用构建器 c - 但将它们全部嵌套在最小公分母内,所以它们都可用。