我正在使用改革 gem,并希望创建两个对象( Foo的一个实例和一个Bar的实例),这两个对象都具有一个'name‘属性:
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”。还有别的办法吗?
发布于 2014-01-05 06:10:22
它很简单,为了实现这一目标,请使用:
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]"这样就避免了名字的碰撞。
发布于 2013-09-04 12:59:59
我从来没有使用过改革宝石,但它看起来像你可以叫任何你想要的属性。所以试试
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像这样的东西有用吗?
https://stackoverflow.com/questions/18614091
复制相似问题