我正在使用Reform gem并想要创建两个具有'name'属性的对象(一个Foo实例和一个Bar实例):
class MarflarForm < Reform:Form
include DSL
include Reform::Form::ActiveRecord
property :name, on: :foo
property :name, on: :bar
end
但出于显而易见的原因,我无法做到这一点:
= simple_form_for @form do |f|
= f.input :file
= f.input :file
我能想到解决这个问题的唯一方法是将其中一个数据库列重命名为'title'。还有另一种方式吗?
答案 0 :(得分:1)
它很简单,为实现这个目标,请使用:
class MarflarForm < Reform:Form
include DSL
include Reform::Form::ActiveRecord
property :name, on: :foo
property :name, on: :bar
end
并在视图中
= simple_form_for @form do |f|
= f.input "foo[name]"
= f.input "bar[name]"
避免名称冲突。
答案 1 :(得分:0)
我从未使用过改革宝石,但它看起来像你可以随意调用属性。所以试试
property :foo_file, on: :foo
property :baz_file, on: :baz
然后,在保存时,您只需要负责将这些属性映射回正确的模型属性。
@form.save do |data, nested|
@foo.file = nested[:foo_file]
@baz.file = nested[:baz_file]
# etc...
end
这样的事情有用吗?