Как использовать форму для добавления в обе соединенные таблицы в Rails - PullRequest
0 голосов
/ 19 октября 2018

У меня есть объединенная таблица, но я ищу способ ввода информации из формы в обе таблицы или она должна работать в целом:

Моя схема:

  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, где мне было предложено сделать это: Разрешение нескольким записям в категории для отправки в листинг

Когда я нажимаю кнопку отправить, ничего не появляетсяв таблицы category_listings.Предложения о том, как мне это сделать?

1 Ответ

0 голосов
/ 19 октября 2018

Ассоциации в вашей Listing модели неверны.Это должно быть просто

Listing < ApplicationRecord    
  has_and_belongs_to_many :categories
end

Я предлагаю вам прочитать has_and_belongs_to_many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...