所以我有3个文本输入字段,每个字段代表一个坐标,它们以我的模型中的数组格式[x, y, z]
存储。
我正在尝试使用输入字段一起工作以生成使用表单提交的数组。我的代码目前:
=f.input_field :coordinates[0], value: "1"
=f.input_field :coordinates[1], value: "2"
=f.input_field :coordinates[2], value: "3"
所以我希望我可以使用控制器中的coordinates
参数将其保存到数据库中。
问题是,使用此设置时,生成的html为<input value="1" name="shape[o]" id="shape_o">
时应为<input value="1" name="shape[coordinates][]" id="shape_coordinates_0">
N.B。我在模型中已经有serialize :coordinates
答案 0 :(得分:1)
尝试直接设置自定义属性:
= f.input_field :coordinates, input_html: { value: 1,
id: "shape_coordinates_0",
name: "shape[coordinates][]" }
但我建议您在模型中为每个坐标创建attr_readers
,然后将其合并到数组中:
# model:
class Shape < ActiveRecord::Base
attr_reader :x, :y, :z #since you want to serialize it
before_create :build_coordinates
private
def build_coordinates
self.coordinates = [x, y, z]
end
end
在这种情况下,您的视图看起来很容易:
=f.input_field :x, value: "1"
=f.input_field :y, value: "2"
=f.input_field :z, value: "3"