Проблема с множественным выбором с отношением HABTM с использованием Rails 4
Хотя код кажется правильным, когда я пытаюсь отправить форму, значения множественного выбора не отправляются.
Если я просто удалю несколько опций, все работает как ожидается, учитывая только одно значение, но важно хранить более одного тега за транзакцию.
Model
Transaction.rb
class Transaction < ActiveRecord::Base
has_and_belongs_to_many :tags
Tag.rb
class tag < ActiveRecord::Base
has_and_belongs_to_many :transactions
Просмотр
<%= form.collection_select :tag_ids, @tags, :id, :name, {},
{:multiple => true} %>
Результат:
<select id="transaction_tag_ids" multiple="multiple" name="transaction[tag_ids][]">
<option value="1">..</option>
</select>
Ответы
Ответ 1
Убедитесь, что вы правильно разрешили полученные параметры для массового назначения.
Вы сказали, что один параметр работает, поэтому я предполагаю, что у вас где-то в вашем контроллере что-то вроде:
params.require(:transaction).permit(:name, :tag_ids)
Итак, вам нужно позволить получить массив:
params.require(:transaction).permit(:name, :tag_ids => [])
Ответ 2
Я решил свою проблему, используя
{:health_unit_ids => []}
Рельсы 4 не принимаются без {}