我有一组与特定父对象相关的记录。我不需要更新父母,只想更新所有的孩子。
我尝试制作一个 Reform::Form 并简单地添加集合声明。一个例子可能是开发人员有许多项目。当开发人员去度假时,他的项目是“on_hold”,但其中一些可能仍然处于活动状态。所以,我想用一个复选框列出所有项目,以检查它们是否应该被搁置。我本质上想要一个 simple_fields_for :projects。
为此使用改革是否有意义?
我有这个代码:
class ProjectsForm < Reform::Form
collection :projects do
property :name #perhaps I want to rename them in the same form (bear with me)
property :on_hold
end
end
这应该可以,但是在使用哈希初始化表单时
@form = ProjectsForm.new({projects: @array_of_projects})
我收到一个错误
#<Hash:0x007fce8f2783b8> 的未定义方法“项目”
好像收集方法不起作用。我显然在做一些愚蠢的事情。
我真的很想使用改革。我喜欢许多开创性的宝石套装背后的哲学。如果有人能在这里为我指明正确的方向,那就太好了。
如果事实证明这不是改革的好用例,我会找到另一个:P
更新:
我认为改革与模型的想法比我想象的要多一些。我认为它只是一个具有属性的表单对象,可以很好地与表单生成器一起使用。我现在发现你的模型是关键。您需要使用 A 模型初始化改革表单,或者在组合的情况下,使用几个模型。但是,如果您传入一个哈希数组,则认为这是模型,然后尝试访问模型上的 :projects 属性。在我的情况下,一个哈希。
我现在添加了一个
# my contrived example is getting lame
attr_accessor :projects
到开发人员类,它正在工作。至少生成改革对象是有效的。
我仍然很好奇这是否是改革的一个很好的用例。