Stu*_*tuR 7 postgresql json activeadmin ruby-on-rails-4
我的模型中有一个JSON类型,它来自Postgres,迁移看起来像:
create_table :people do |t|
t.string :name
t.json :links
end
Run Code Online (Sandbox Code Playgroud)
此JSON对象的结构如下所示:
{
"facebook" : "u12345",
"google" : "u54321"
}
Run Code Online (Sandbox Code Playgroud)
在Active Record中,我试图显示此对象,以便可以编辑它们,或者可以添加新的键/值:
form do |f|
f.inputs "Person Details" do
f.input :name
f.input :links <- Error here because active admin doesn't recognise JSON type
end
f.actions
end
Run Code Online (Sandbox Code Playgroud)
当我从活动管理员编辑人员条目时,我得到"无法找到json的输入类".
我喜欢它,以便json结构中的每个键成为输入的标签,例如:
__________
Facebook | u12345 |
??????????
__________
Google | u54321 |
??????????
__________
Twitter | |
??????????
Run Code Online (Sandbox Code Playgroud)
在我的活动管理表单块中,我想指定3/4预定义的键,比如facebook,google,twitter,如果来自模型的JSON结构中不存在其中一个键,它将显示为空输入,允许管理员为该键添加值,并将其保存回数据库.如果密钥确实存在于JSON结构中,则将使用其值填充输入,以便可以对其进行编辑.
所以我的问题是如何从主动管理员简单地管理/编辑JSON结构,并以上述格式表示数据?
Stu*_*tuR 18
这有效:
permit_params :name, {:links => [:facebook, :twitter]}
form do |f|
f.inputs "Person Details" do
f.input :name
end
f.inputs :name => "Links", :for => :links do |g|
g.input :facebook, :input_html => { :value => "#{person.links['facebook']}" }
g.input :twitter, :input_html => { :value => "#{person.links['twitter']}" }
end
f.actions
end
Run Code Online (Sandbox Code Playgroud)
这不是最好的解决方案,但除非有人有更好的答案,否则必须这样做.
有一个宝石: https: //github.com/udacity/activeadmin_json_editor
activeadmin_json_editor允许您使用结构化字段编辑器编辑 JSONb 字段。管理员应该理解哈希或数组的概念,但除此之外,它是开箱即用的。
| 归档时间: |
|
| 查看次数: |
2452 次 |
| 最近记录: |