我有一个已联接的表,但是正在寻找一种方法来将表单中的信息输入到两个表中,或使其正常工作:
我的模式:
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表。有关如何实现此目标的建议?
答案 0 :(得分:0)
您的Listing
模型中的关联是错误的。应该是
Listing < ApplicationRecord
has_and_belongs_to_many :categories
end
我建议您阅读has_and_belongs_to_many