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

时间:2016-04-15 13:37:02

标签: ruby-on-rails forms simple-form nested-attributes fields-for

我有一个表单,使用CompanyAddress在一个表单中将属性保存到两个模型simple_nested_form_for和嵌套模型simple_fields_for

属性:

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 %>

我如何使这项工作?

1 个答案:

答案 0 :(得分:3)

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

嵌套字段依赖于它们的构建器来表示将params的哪一部分放入其中。所以只需调用所需的构建器。

<%= 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 - 但是嵌套它们都在最低的共同点内,所以它们都可用。