Ruby on rails 使用postgre hstore使用json数据呈现表单
我的一个模型中有一个属性列 而Ruby on rails 使用postgre hstore使用json数据呈现表单,ruby-on-rails,metaprogramming,postgresql-9.2,form-for,ruby-on-rails-4.1,Ruby On Rails,Metaprogramming,Postgresql 9.2,Form For,Ruby On Rails 4.1,我的一个模型中有一个属性列 而属性列是hstore类型,它存储JSON格式字符串 我希望我的用户以普通格式编辑它 我希望它能自动跨越4个输入字段 name 范围 安全性 默认值 有什么宝石可以实现它吗 更新 我遵循@zwippie解决方案,并在表单中正确显示 但它无法更新 当我试图更新它时 但我应该将这些字段添加到强参数中 是否有任何动态的方法来实现这一点 要展开hstro中的所有列,而不是硬代码存储访问器:cgi\u属性,:名称,:范围,:安全性,:默认值, 并将其附加到白名单中 = f.t
属性列
是hstore类型,它存储JSON格式字符串
我希望我的用户以普通格式编辑它
我希望它能自动跨越4个输入字段
name
范围
安全性
默认值
有什么宝石可以实现它吗
更新
我遵循@zwippie解决方案,并在表单中正确显示
但它无法更新
当我试图更新它时
但我应该将这些字段添加到强参数中
是否有任何动态的方法来实现这一点
要展开hstro中的所有列,而不是硬代码存储访问器:cgi\u属性,:名称,:范围,:安全性,:默认值
,
并将其附加到白名单中
= f.text_area column, class: 'input-xxlarge'
但是它我认为没有一个宝石可以实现它,但是使用元编程仍然是可能的 使用元编程,您可以基于对象的数据动态创建方法。我解释了序列化数据,这很可能与您的情况有关
您需要扩展的是视图,但这不是一个问题,您可以简单地调用一个方法,返回序列化数据的所有键,然后遍历它们并生成输入。Rails 4可以立即完成此操作。将此添加到您的模型中:
store_accessor :attributes, :name, :range, :security, :default_value
现在,您可以将hstore属性用作普通活动记录属性:
item = Item.find(2)
item.update(security: '5/6')
或以以下形式:
<%= f.text_field :default_value %>
如果您在应用程序中使用postgresql数据库,我想可能会很有用。我遵循了您的解决方案,但仍然存在一些问题,我更新了我的帖子,感谢您的支持:)@newBike,我知道这是旧的,但如果其他人看到,请确保更新您的强参数以接受存储访问器。