在Active Admin中将多个输入组合成ruby哈希
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Active Admin中将多个输入组合成ruby哈希相关的知识,希望对你有一定的参考价值。
所以我有一个双重嵌套的联想,如Foo
s有许多Bar
s有很多Baz
s。 Baz
模型有一个名为data
的序列化字段,它采用散列形式,将范围(即:1..3
)映射到数值。 { (1..3) => 42 }
目前在Active Admin编辑页面中,我有类似的内容:
form do |f|
f.semantic_errors
f.has_many :bars, heading "Bar" do |t|
f.input :item_one
f.input :item_two
t.has_many :bazs do |r|
r.input :name
r.input :data, as: :string
end
end
end
正如您所看到的,我将Hash作为字符串处理,并在编辑页面的文本框中呈现它。我希望能够遍历已经存在的数据并将它们渲染到单独的文本框中,以便可以单独编辑或删除它们......但是在提交表单时,它会将这些输入粘合在一起并将数据作为哈希传递而不是一个字符串。
可以通过编写自定义表单构建器来完成吗?什么是最好的方法?
我想构建一个可扩展的解决方案,不需要将任何代码写入模型或控制器。
感谢阅读o//
更新:我找到了一个适合我的解决方案。由于这里的整个问题是我们的数据在被放入数据库时从Hash序列化为字符串,因此允许用户将此数据编辑为JSON并对模型上的setter方法进行更改以获取数据以允许它解析JSON。这使得事情变得更简单,因为我可以使用这个JSON editor widget来提供一个很好的UI来编辑数据。然后诀窍是学习如何将小部件应用于使用“添加新项”按钮创建的项目。看看active admin source code,我了解到我可以挂钩到has_many_add:after
事件,以便在已经添加到DOM树之后将JSON编辑器应用于添加的元素。
我会尝试使用decorator隐藏表单中的转换。否则hstore editor可能会给你一些灵感。我建议不要使用自定义表单构建器,尤其是嵌套的has_many。
以上是关于在Active Admin中将多个输入组合成ruby哈希的主要内容,如果未能解决你的问题,请参考以下文章