我正在使用Rails 4和postgres。每个模型都有一个输入表单,用户输入参数。然后使用这些参数来搜索表格。每个模型都有自己的参数与其他模型无关,并且自己的表可以搜索。然后,所有模型都从各自的表中返回一个值。模型及其相关表单只能单独工作(我在模型1中输入我的参数,然后在表中搜索模型1并返回答案)。
我正在尝试创建一系列允许我组合模型的页面。例如,我想要用户可以在所有3个模型中输入信息的页面,仅包含3个模型中的2个的页面,或者甚至是具有两个相同模型和第三个不同模型的页面。这样做的最佳方式是什么?
我已经尝试过nested_attributes,但我不确定它是否适用,因为我没有关联。我是否遗漏了具有该功能的东西,它允许它在这个用例中工作?谢谢!
答案 0 :(得分:2)
这是一个包含多个模型的表单的一个有点人为的例子,没有嵌套:
<%= form_tag(controller: "foo", action: "bar", method: :post) do %>
<%= fields_for(:subscriber, @user) do |sub_fields| %>
<div class="row">
<%= sub_fields.label :email %>
<%= sub_fields.text_field :email %>
</div>
<% end %>
<%= fields_for(@cat) do |cat_fields| %>
<div class="row">
<%= sub_fields.label :name %>
<%= cat_fields.text_field :name %>
</div>
<% end %>
<% end %>
让我们从顶部过来:
form_tag
代替form_for
,因为我们只想要一个未与资源绑定的表单。fields_for
允许我们将输入绑定到任意资源。由此产生的参数将是这样的:
{
subscriber: {
email: 'john.doe@example.com'
},
cat: {
name: 'Nisse'
}
}
另见:
答案 1 :(得分:0)
查看fields_for包装器。
http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for