在我的 Rails 3.0 应用程序中,我想添加一个表单元素,用户可以在其中创建一系列最多 5 个关键字/值对,并将其存储在单个字段中。关键字是由用户定义的,而不是应用程序,因此我研究过的其他 SO 问题将不起作用,因为在这些示例中,代码必须提前“知道”键。
键永远是一个单词,值永远是一个简短的句子。
所以 1 位用户可能想以某种方式输入以下内容:{'snow' => 'I like snow', 'ski' => 'I like to ski'}
其他用户可能会输入相当于:{'red' => '我最喜欢的颜色是红色', 'yellow' => 'Dont eat yellow snow'}
我知道如何使用我的模型的序列化:选项,哈希到数据库存储/检索单个文本字段中的哈希。
我没有得到一种简单的方法来允许用户创建/编辑散列,而不必在 text_area 字段中实际输入 json 或散列格式。
蛮力:由于我有固定且少量的允许对(5),在我看来,我可以提供 10 个字段供他们输入 0-5 对,然后保存表单并显示逻辑以某种方式将这些对移出/移出这 10 个字段。但我无法弄清楚将这 10 个字段映射到序列化数据的逻辑。任何帮助,将不胜感激。
ELEGANT:更好的方法当然是动态生成散列编辑表单元素。(我想我读过 Rails 3.2 有这个功能,但现在升级是不可能的,因为这是一个大型、复杂的应用程序,有很多移动部件(与多个外部服务集成),所以我们不会更新到更新的 rails 4-6个月。)