Не знаю, релевантно ли это, но я использую Cocoon Gem.
Мой основной ресурс для сохранения - это свойство.
Я вложил в это свойство атрибут вызываемый property_unit_attributes
params.require(:property).permit(
...
property_units_attributes: [:id, :rent, :floor, :suite_number, :square_feet, :unit_type[], :ceiling_height, :condition, :amenities, :_destroy]
);
Проблема здесь заключается в unit_type
, которые являются флажками во вложенной форме, которая принимает эти атрибуты
Я не буду включать всю форму, поскольку все атрибуты сохраняются правильно кроме моего массива. Вот несколько из моих полей-флажков под :unit_type
<div class="field">
<%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'condominium', nil %>
<label>Condominium</label>
</div>
<div class="field">
<%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'general_business', nil %>
<label>General Business</label>
</div>
<div class="field">
<%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'health_care', nil %>
<label>Health Care</label>
</div>
<div class="field">
<%= f.check_box :unit_type, { multiple: true, class: 'field__checkbox' }, 'hostpitality_or_hotel', nil %>
<label>Hospitality / Hotel</label>
</div>
И пример визуализированного HTML:
<div class="field">
<input class="field__checkbox" type="checkbox" value="land" name="property[property_units_attributes][0][unit_type][]" id="property_property_units_attributes_0_unit_type_land">
<label>Land</label>
</div>
Когда я отправляю форму, все атрибуты отображаются в запрос. Я просто расскажу об атрибутах:
"property_units_attributes"=>{"0"=>{"rent"=>"33.0", "floor"=>"33", "suite_number"=>"[FILTERED]", "square_feet"=>"33", "unit_type"=>["condominium", "industrial", "office"], "ceiling_height"=>"33.0", "condition"=>"3", "amenities"=>"3", "id"=>"10"}},
Как видите, я выбрал три флажка, и они помещены в массив:
"unit_type"=>["condominium", "industrial", "office"]
При отправке я получаю эту ошибку: wrong number of arguments (given 0, expected 1..2)
Это происходит, когда я добавляю []
к параметру :unit_type
под вложенными атрибутами (см. Выше).
Если я удаляю ее, форма отправляется, но этот столбец не сохраняется.
Я хочу повторить, что все остальные поля сохраняются правильно. Только этот столбец массива полностью его игнорирует.
Если вам нужна дополнительная информация или код из других частей приложения, сообщите мне об этом в комментарии.