Ruby on rails Rails,通过窗体传递数组
我尝试使用复选框标记在rails表单中推送数组属性,如下所示:Ruby on rails Rails,通过窗体传递数组,ruby-on-rails,forms,Ruby On Rails,Forms,我尝试使用复选框标记在rails表单中推送数组属性,如下所示: = check_box_tag 'order[supplementals_ids][]', supplemental.id params.require(:order).permit(:meal_id, supplementals_ids: []) 提交表单时一切正常。在创建订单之前,我正在使用调试器检查推送的参数。params[:order]的输出为 {"supplementals_ids"=>["2", "3"], "
= check_box_tag 'order[supplementals_ids][]', supplemental.id
params.require(:order).permit(:meal_id, supplementals_ids: [])
提交表单时一切正常。在创建订单之前,我正在使用调试器检查推送的参数。params[:order]的输出为
{"supplementals_ids"=>["2", "3"], "meal_id"=>"4"}
看起来不错。但是,在创建订单之后,我得到了以下结果
supplementals_ids: nil
知道问题出在哪里吗?orders控制器中允许的参数如下所示:
= check_box_tag 'order[supplementals_ids][]', supplemental.id
params.require(:order).permit(:meal_id, supplementals_ids: [])
我怀疑问题在于,在我的模式中,补充ID的期望值是一个整数
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
谢谢你的建议 使用迁移更改数据库中的列类型
class ChangeColumnSupplementalsIdsInOrder < ActiveRecord::Migration
def up
change_column : supplementals_ids, :text
end
def down
change_column : supplementals_ids, :integer
end
end
注意:值数组不能保存在
整型列补充ID
使用迁移更改数据库中的列类型
class ChangeColumnSupplementalsIdsInOrder < ActiveRecord::Migration
def up
change_column : supplementals_ids, :text
end
def down
change_column : supplementals_ids, :integer
end
end
注意:值数组无法保存在integer
列supplementals\u id
您是否试图将数组保存在supplementals\u id
中?是的,是否可能有[“2”,“3”]在其中?这真的很糟糕。最好的方法是在顺序中关联有许多:增补
,这样你就可以保存这些增补并按顺序获取。增补
。(您可以在订单和补充之间使用联接模型)。请检查我的答案,它将对您有效:)您是否尝试在补充ID
中保存数组?是的,是否可能在其中包含[“2”,“3”]?这真的很糟糕。最好的方法是在顺序中关联有许多:增补
,这样你就可以保存这些增补并按顺序获取。增补
。(您可以在订单和副刊之间使用联接模型)。请检查我的答案,它适用于您:)