Rails4 form_for中的JSON数据类型

时间:2013-11-05 15:48:38

标签: json ruby-on-rails-4 rails-postgresql

如何在rails中将JSON PostgreSQL类型的填充值转换为嵌套形式?

我有一个类似

的模型
title :text
description :text
grid :json

内部属性我想存储维度和其他内容

{
  "cols": 15, 
  "rows": 15
  "pos": {
      "x": 10, 
      "y": 5
  }
}

对应形式

@form_for @product do |f|
  f.text_field :title 
  f.text_field :description

  f.fields_for :grid do |grid_f|
     grid_f.text_field :cols 
     grid_f.text_field :rows
  end
end 

但是没有填充cols和rows。我是否必须手动创建输入并设置值。或者是因为@ product.grid里面没有符号,而是字符串?

所以@ product.grid [:cols]不起作用,但@ product.grid [' cols']确实有效。

1 个答案:

答案 0 :(得分:1)

我相信formhelper使用模式生成其字段,因为hstore中的项目可能会有所不同,所以它无法自动生成这些字段。

除了实现细节之外,您可以迭代对象中的值(source):

<% f.grid.attributes.try(:each) do |key, value| %>
  <%= f.text_field key, :input_html => {:value => value } %>
<% end %>