Я пытаюсь вытолкнуть атрибут массива в рельсах формируют с помощью check_box_tag который выглядит следующим образом:Rails, передать массив через форму
= check_box_tag 'order[supplementals_ids][]', supplemental.id
Все идет нормально при отправке формы. Я рассматриваю нажатые параметры с помощью отладчика непосредственно перед созданием заказа. Выход параметров [: порядок] равен
{"supplementals_ids"=>["2", "3"], "meal_id"=>"4"}
, который выглядит нормально. Однако после создания заказа я получаю следующее:
supplementals_ids: nil
Любая идея, в чем проблема? Разрешенный PARAMS в контроллере заказов выглядеть следующим образом:
params.require(:order).permit(:meal_id, supplementals_ids: [])
То, что я подозреваю, что проблема заключается в том, что в моей схеме, ожидаемое значение supplementals_ids является целым числом.
create_table "orders", force: :cascade do |t|
t.integer "meal_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "supplementals_ids"
end
Однако, когда сериализации атрибут в моей модели, я получаю
Атрибут должен был быть массив, но был Fixnum. - 0
Благодарим за любые предложения!
Вы пытаетесь сохранить массив в 'Additionalals_ids'? – Aamir
Да, возможно ли в нем ["2", "3"]? –
это действительно плохо. Лучший способ - это ассоциация 'has_many: addplements' в' Order', поэтому вы можете сохранить дополнения и получить «order.supplements». (вы можете использовать модель соединения между порядком и дополнением). – dpedoneze