Ruby on rails 在rails表单中存储和检索postgres嵌套的JSONB数据类型
我意识到关于如何使用rails表单存储和检索JSON类型数据的信息并不多。我目前面临以下问题: 我有一个在JSON中创建嵌套结构的表单:Ruby on rails 在rails表单中存储和检索postgres嵌套的JSONB数据类型,ruby-on-rails,json,forms,postgresql,jsonb,Ruby On Rails,Json,Forms,Postgresql,Jsonb,我意识到关于如何使用rails表单存储和检索JSON类型数据的信息并不多。我目前面临以下问题: 我有一个在JSON中创建嵌套结构的表单: = form_for(@car) do |cf| = cf.fields_for :locations do | locations_f | = locations_f.fields_for :primary_location do | primary_location_f | .sm-col.md-col.sm
= form_for(@car) do |cf|
= cf.fields_for :locations do | locations_f |
= locations_f.fields_for :primary_location do | primary_location_f |
.sm-col.md-col.sm-col-6.px2
label.inline-block.mb1 District
= primary_location_f.text_field :district
.sm-col.md-col.sm-col-6.px2
label.inline-block.mb1 Street
= primary_location_f.text_field :street
它将生成输入HTML标记,如下所示:
在执行params.permit
后,我能够将其保存在数据库中:
params.require(:car).permit([
locations:[primary_location:[:street, :district]]
])
我还在模型中创建store\u accessor
store_accessor :locations, :primary_location, :other_locations
但是,在我持久化数据之后,我希望它显示在text\u字段中
数据库中已经持久化的内容。我试着做一些事情,比如:
= primary_location_f.text_field :district, value: @car.locations['primary_location']['district']
但是,它会遇到NilClass错误,因为有时@car.locations['primary\u location']
可能为零,当我调用@car.locations['primary\u location']['district']
时会出现错误
我想知道存储和检索JSON数据类型的最佳方法是什么。当JSON被嵌套时,什么是好方法
谢谢
但是,它会遇到NilClass错误,因为有时@car.locations['primary_location']可能为零,当我调用@car.locations['primary_location']['district']时会出现错误
使用方法
我想知道存储和检索JSON数据类型的最佳方法是什么。当JSON被嵌套时,什么是好方法
我更喜欢内置JSON
store
。与您正在使用的类似。您好,您将如何使用store来实现它?它如何将数据检索到表单中?表单只需调用字段的访问器,因此只需添加相应的store\u访问器即可。对于级别超过1的json,我会在视图中编写循环。谢谢。你能写一个例子来帮助我更好地理解吗?谢谢
@car.locations.try(:[],:primary_location).try(:[], :district)