如何使用表单将其添加到Rails中的两个联接表中

时间:2018-10-19 03:47:20

标签: ruby-on-rails ruby

我有一个已联接的表,但是正在寻找一种方法来将表单中的信息输入到两个表中,或使其正常工作:

我的模式:

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

  create_table "categories_listings", id: false, force: :cascade do |t|
    t.integer "category_id", null: false
    t.integer "listing_id", null: false
  end

  create_table "listings", force: :cascade do |t|
    t.string "name"
    t.text "description"
    t.decimal "price"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "image"
    t.integer "user_id"
  end

型号:

class Category < ApplicationRecord
  has_and_belongs_to_many :listings
end

Listing < ApplicationRecord    
  belongs_to :category, required: false
  belongs_to :categories_listings, required: false
end

观看次数

<%= form_with(model: listing, local: true) do |form| %>
...
  <div class="space">
    <%= form.select :category_ids, options_from_collection_for_select(Category.all, :id, :name), :prompt => "Select a Category", :multiple => true %>
  </div>
...

在我加入表格之前,我已将其与附加到类别表的列表中的一个类别元素(我相信这是正确的术语)一起使用...您可以看到我之前关于SO的文章建议您这样做:Allowing multiple records in category to submit to listing

当我单击提交时,没有任何内容输入Categories_listings表。有关如何实现此目标的建议?

1 个答案:

答案 0 :(得分:0)

您的Listing模型中的关联是错误的。应该是

Listing < ApplicationRecord    
  has_and_belongs_to_many :categories
end

我建议您阅读has_and_belongs_to_many