ruby-on-rails - 如何从 Rails 4 中的多个非关联(非嵌套)模型创建一个表单?

标签 ruby-on-rails html postgresql ruby-on-rails-4

我将 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/

相关文章:

ruby-on-rails - 如何在 Capybara 集成测试中访问 stdout 或 stderr

android - 尝试在 android 中获取网页的 html 代码时出错?

javascript - 可以从外部源 <img src ="..."/> 提取图像。没有javascript可以从外部拉取TEXT吗? <跨度 ="...">

php - 了解 PHP PG 准备语句中的查询

不支持 PostgreSQL 身份验证方法 10

ruby-on-rails - Ruby 类( super )

ruby-on-rails - 索引非模型对象以在Elasticsearch中的Rails中进行搜索

javascript - 使用 [action].js.erb 在 Rails 中调用 Flash Notice

html - CSS 媒体查询不起作用 仅限 iPad 横向

sql - 如何使用 SQL/postgresql 打印自定义短语 + 计算?