Rails 5: создание нескольких элементов таблицы соединения с помощью множественного выбора - PullRequest
0 голосов
/ 07 ноября 2019

Я использую отношение has_many through: для классификации blogs в subcategories через blog_categorizations.

У меня все модели настроены правильно:

class Blog < ApplicationRecord
  has_many :blog_categorizations
  has_many :subcategories, through: :blog_categorizations
end

class Subcategory < ApplicationRecord
  has_many :blog_categorizations
  has_many :blogs, through: :blog_categorizations
end

class BlogCategorization < ApplicationRecord
  belongs_to :blog
  belongs_to :subcategory
end

Но теперь у меня проблемы с настройкой в ​​моем blogs/_form. У меня есть следующий множественный выбор:

<select class="mdb-select colorful-select dropdown-primary md-form" multiple searchable="Search here...">
  <%= Subcategory.all.each do |sub| %>
    <option value="<%= sub.id %>"><%= sub.name %></option>
  <% end %>
</select>
<label class="mdb-main-label">Subcategories</label>

, который правильно отображает список возможных подкатегорий, но теперь я не могу понять, как создать новый blog_categorization для каждой выбранной. Я хочу использовать hidden_field, но чувствую, что в данном случае это неправильно.

Кто-нибудь реализовал что-то подобное?

1 Ответ

0 голосов
/ 08 ноября 2019
  1. Используйте помощник по формам Простая форма для создания выбора. Входной идентификатор важен. Это должно быть subcategory_ids

    <%= f.input :subcategory_ids, collection: Subcategory.all,
                                  input_html: { multiple: true } %>
    
  2. Разрешить параметр subcategory_ids в BlogsController. Добавьте subcategory_ids (array) в качестве последнего аргумента метода разрешения.

    def blog_params
      params.require(:blog).permit(:foo, :boo, subcategory_ids: [])
    end
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...