Я пытаюсь разрешить выбор нескольких полей-флажков в простой форме:
<%= form_with(model: coffee_roast, local: true) do |form| %>
<% if coffee_roast.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(coffee_roast.errors.count, "error") %> prohibited this coffee_roast from being saved:</h2>
<ul>
<% coffee_roast.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<strong><%= form.label :name %></strong>
<%= form.text_field :name, id: :coffee_roast_name %>
</div>
<div class="field">
<strong><%= form.label :bean,"Select bean(s)" %></strong>
<%= collection_check_boxes(:coffee_roast, :coffee_beans, CoffeeBean.all, :id, :name) %>
</div>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
Коллекция collection_check_box отлично работает, извлекая значения из другой модели через таблицу соединения.Мои модели:
coffee_bean.rb
class CoffeeBean < ApplicationRecord
has_many :coffee_blends
has_many :coffee_roasts, through: :coffee_blends
end
coffee_roast.rb
class CoffeeRoast < ApplicationRecord
belongs_to :roaster
has_many :coffee_blends
has_many :coffee_beans, through: :coffee_blends
has_many :flavours, through: :coffee_flavours
end
И таблица соединения
coffee_blend.rb
class CoffeeBlend < ApplicationRecord
belongs_to :coffee_bean
belongs_to :coffee_roast
end
проблема
Когда я сохраняю coffee_roast
и выбираю паруФлажки, запись создается без ошибок, но я не вижу никаких идентификаторов, заполненных в таблице соединений.
Я подозреваю, что это может быть связано с тем, что не разрешены идентификаторы в coffee_roast_controller.rb
Я попробовал несколько вариантов, но не могу заставить его работать.Это моя последняя попытка:
def coffee_roast_params
params.require(:coffee_roast).permit(:name, :coffee_bean_name, coffee_bean_id:[])
end