我将 Rails 4 与 postgres 结合使用。每个模型都有一个输入表单,用户可以在其中输入参数。然后使用这些参数来搜索表格。每个模型都有自己的与其他模型无关的参数和自己的搜索表。然后所有模型从各自的表中返回一个值。这些模型及其相关联的表格单独工作(我在模型 1 中输入我的参数,它在表中搜索模型 1 并返回答案)。
我正在尝试创建一系列允许我组合模型的页面。例如,我想要用户可以在所有 3 个模型中输入信息的页面,只包含 3 个模型中的 2 个的页面,或者甚至可能包含两个相同模型和第三个不同模型的页面。执行此操作的最佳方法是什么?
我已经尝试过 nested_attributes 但我不确定它是否适用,因为我没有关联。我是否遗漏了一些允许它在这个用例中工作的功能?谢谢!
最佳答案
这是一个包含多个模型但没有嵌套的表单示例:
<%= 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
因为我们只需要一个不绑定(bind)资源的表单。 fields_for
让我们可以将输入绑定(bind)到任意资源。
生成的参数将是这样的:
{
subscriber: {
email: 'john.doe@example.com'
},
cat: {
name: 'Nisse'
}
}
另见:
关于ruby-on-rails - 如何从 Rails 4 中的多个非关联(非嵌套)模型创建一个表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30488722/