我正在使用Rails 5.1.4和Postgresql 9.6,我确实有一个名为Car的模型带有一些jsonb字段,但那些jsonb字段有相同的子字段名称,例如加速有子字段[汽油,乙醇,柴油]和max_speed也有[汽油,乙醇,柴油],电源和扭矩也有这些相同的子字段,我想知道如何创建一个编辑表单以及如何使用store_accessor。
答案 0 :(得分:0)
我得到了它,而不是使用store_accessor我使用fields_for和OpenStruct来编辑数据......
<%= f.fields_for :power, OpenStruct.new(@car.power) do |power| %>
然后字段就像:
<%= power.text_field :gasoline %>
<%= power.text_field :ethanol %>
对max_speed,加速度和扭矩等其他领域也这样做。
答案 1 :(得分:0)
我写了一个宝石,看来可以解决您的问题。 参见:https://github.com/yfxie/json_attribute
在您的情况下,假设json_attribute
是cars
表中的json类型列,然后添加所需的所有属性:
class Car < ApplicationRecord
has_json_attribute :acceleration_gasoline
has_json_attribute :acceleration_ethanol
has_json_attribute :acceleration_diesel
has_json_attribute :max_speed_gasoline
has_json_attribute :max_speed_ethanol
has_json_attribute :max_speed_diesel
end
视图中:
<%= form_for(car_instance) ... do |f| %>
<%= f.text_field :acceleration_gasoline %>
<%= f.text_field :acceleration_ethanol %>
...
<% end %>
希望对您有帮助。