我有一个邮资表,其中的费率列是使用postgresql的数组类型。 该数组包含3个值,例如[1.99,2.99,5.99]。 我无法弄清楚如何正确提交表单,我想为数组的每个元素显示一个字段。
我当前的非工作代码是;
= form_for [:admin,@postage] do |f|
.field-box
= f.label :name
= f.text_field :name
= f.label "UK"
= text_field_tag "rate[]"
= f.label 'EU'
= text_field_tag "rate[]"
= f.label "Rest of World"
= text_field_tag "rate[]"
表单在参数中传递但未保存到数据库
Parameters: {"utf8"=>"✓", "authenticity_token"=>"xxx=", "postage"=>{"name"=>"Item1"}, "rate"=>["1.99","2.99","5.99"], "button"=>"", "id"=>"2"}
如何正确设置表单,订单总是完整无缺?
答案 0 :(得分:0)
好的,首先我相信你的模型类中仍然需要serialize :rate
。
但是为了使该速率与您在开始时显示的格式相匹配,您需要执行rate = rate.map {|rt| rt.to_f}
(是的,我知道必须有一种简化方法)。
答案 1 :(得分:0)
看起来它正在序列化。你在使用Rails 4吗?如果是这样,请检查控制器中的permit方法。对于PG数组,它应该如下所示:
params.permit({rate: []})
另外,我建议将列名更改为费率。 :)