ruby-on-rails – 是否可以显示包含jsonb属性字段的表单

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 是否可以显示包含jsonb属性字段的表单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个名为dynamic的jsonb字段的Product模型.

我实际上有2个产品记录

产品1:

dynamic = {"name": "super product 1","description": "lorem ipsum text" }

产品2:

dynamic = {"title": "this is an ebook","author": "john doe","creation_date": "2015"}

要编辑每个产品,我需要显示一个表单.对于产品1,表单将包含2个字段(名称和描述),而对于产品2,表单将包含3个字段(title,author,creation_date)

搜索了但似乎我发现的所有文章都谈到了如何使用控制台来保存或编辑json字段,但没有人谈论如何使用表单.

有什么帮助吗?谢谢

解决方法

如果您使用的是simple_form,则可以执行以下操作:
f.simple_fields_for :dynamic do |dynamic_f|
  @product.dynamic.each do |k,v|
    dynamic_f.input k.to_sym
  end
end

不要忘记允许控制器中的参数如下:

params.require(:product).permit(dynamic: [:name,:description,:title,:author,:creation_date]])

将所需的特定参数列入白名单总是好的做法,但如果你想让动态内的所有内容都可以尝试这样的事情:

params.require(:product)permit( **permitted paramters in here** ).tap do |whitelisted|
  whitelisted[:dynamic] = params[:product][:dynamic] if params[:product][:dynamic]
end

或者允许产品型号使用的所有内容

params.require(:product).permit!

不建议这样做,因为它会使您在json字段之外的其他数据被覆盖.

猜你在找的Ruby相关文章