首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >具有连接表和复选框集合的has_and_belongs_to_many

具有连接表和复选框集合的has_and_belongs_to_many
EN

Stack Overflow用户
提问于 2018-06-06 03:21:49
回答 1查看 31关注 0票数 0

我试图使一个管理页面,有一个嵌套的形式为另一个模型。

我有一个行动手册模型:

playbook.rb

代码语言:javascript
复制
  has_and_belongs_to_many :groups
  accepts_nested_attributes_for :groups

我的表单视图

_form.html.haml

代码语言:javascript
复制
<%= form_with(model: playbook, local: true) do |form| %>

   ...

  <%= collection_check_boxes(:group, :group_ids, Group.all, :id, :name) %>

  <div class="actions">
    <%= form.submit %>
  </div>

为了解释得更多,playbook可以有许多组,这是另一种模型,我想在使用我认为是嵌套形式保存playbook时自动保存到groups_playbooks join表。我只是不知道如何使用像我的视图这样的复选框集合来创建嵌套表单。

以下是模式的一部分,有助于更好地描述:

代码语言:javascript
复制
  create_table "groups", force: :cascade do |t|
    t.string "name"
    t.string "variables"
    t.bigint "server_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.index ["server_id"], name: "index_groups_on_server_id"
  end

  create_table "groups_playbooks", id: false, force: :cascade do |t|
    t.bigint "group_id", null: false
    t.bigint "playbook_id", null: false
  end

  create_table "groups_servers", id: false, force: :cascade do |t|
    t.bigint "group_id", null: false
    t.bigint "server_id", null: false
  end

  create_table "playbooks", force: :cascade do |t|
    t.string "name"
    t.string "play"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "description"
  end

  create_table "playbooks_servers", id: false, force: :cascade do |t|
    t.bigint "playbook_id", null: false
    t.bigint "server_id", null: false
  end

  create_table "servers", force: :cascade do |t|
    t.string "name"
    t.string "ip"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.bigint "group_id"
    t.index ["group_id"], name: "index_servers_on_group_id"
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-06 04:00:39

根据specification的说法,您应该使用playbook而不是groups

代码语言:javascript
复制
<%= collection_check_boxes(:playbook, :group_ids, Group.all, :id, :name) %>

但是,既然有了表单构建器,就应该看看that specification

对于你的案例

代码语言:javascript
复制
<%= form.collection_check_boxes(:group_ids, Group.all, :id, :name) %>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50707509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档