Rails form_with для выбора значений из model1 для model2 с отношением has_and_belongs_to_many - PullRequest
0 голосов
/ 11 января 2019

Я новичок в Rails и работаю над проектом блога.

У меня есть статьи и категории . Каждая статья может иметь несколько категорий , а каждая категория может принадлежать нескольким статьям . У меня также есть таблица соединений Articles_categories

Мои миграции:

class CreateArticles < ActiveRecord::Migration[5.2]
  def change
    create_table :articles do |t|
      t.string :title
      t.text :body

      t.timestamps
    end
  end
end

class CreateCategories < ActiveRecord::Migration[5.2]
  def change
    create_table :categories do |t|
      t.string :name

      t.timestamps
    end
  end
end

class CreateArticlesCategoriesJoinTable < ActiveRecord::Migration[5.2]
  def change
    create_join_table :articles, :categories do |t|
      t.index :article_id
      t.index :category_id
    end
  end
end

Мои модельные ассоциации:

class Article < ApplicationRecord
  has_and_belongs_to_many :categories
end

class Category < ApplicationRecord
  has_and_belongs_to_many :articles
end

Пока все это имеет смысл. С чем я сейчас борюсь, как добавить категории при создании новой статьи? Я хочу иметь возможность выбирать предварительно определенные категории из списка (хранится в таблице категорий) через форму.

Какую модель и / или URL (если есть) я использую в помощнике form_with? Следующее где-нибудь близко?

<% form_with model: ???, url: ??? do |f| %>
  <%= f.collection_select :category_id, Category.order(:name), :id, :name %>
<% end %>
...