Подтвердить что ты не робот

Проблема с множественным выбором с отношением 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>
4b9b3361

Ответ 1

Убедитесь, что вы правильно разрешили полученные параметры для массового назначения.

Вы сказали, что один параметр работает, поэтому я предполагаю, что у вас где-то в вашем контроллере что-то вроде:

params.require(:transaction).permit(:name, :tag_ids)

Итак, вам нужно позволить получить массив:

params.require(:transaction).permit(:name, :tag_ids => [])

Ответ 2

Я решил свою проблему, используя

{:health_unit_ids => []}

Рельсы 4 не принимаются без {}