我想知道是否有办法在Rails表单中包含某种输入字段,因此如果用户输入1, 2, 3
,则params[:model][:attribute]
会返回[1, 2, 3]
或至少['1', '2', '3']
,但不是['1, 2, 3']
。
背景:
我有一个模型Foo
,它有一个属性bar_ids
。 PostgresQL数据库中此属性的数据类型为Array。我尝试了几件事:
f.text_field :bar_ids
,则params[:foo][:bar_ids]
返回'1, 2, 3'
f.text_field_tag 'foo[bar_ids][]'
,则params[:foo][:bar_ids]
返回['1, 2, 3']
f.number_field :bar_ids
,则params[:foo][:bar_ids]
如果仅输入'1'
并且表单不允许输入多个数字,则1
会返回{{1}} 所以,再次提出我的问题 - 有没有办法以这种方式构造我的表单,以便Rails自动将输入解析为相应的数据类型,在我的例子中是一个整数数组?
答案 0 :(得分:2)
人们通常在更新模型之前手动编辑params
:
params[:model][:attribute] = params[:model:][:attribute].split(',')
# ...
Model.update_attributes(params[:model])
通常在控制器操作或before_action
中完成。