5

如何实现将 JSON PostgreSQL 类型的值填充到 Rails 中的嵌套形式?

我有一个模型

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'] 起作用。

4

1 回答 1

1

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

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

<% f.grid.attributes.try(:each) do |key, value| %>
  <%= f.text_field key, :input_html => {:value => value } %>
<% end %>
于 2014-02-05T17:52:14.450 回答