gpt4 book ai didi

ruby-on-rails - 如何编辑表单中的 Rails 序列化字段?

转载 作者:行者123 更新时间:2023-12-02 20:57:58 27 4
gpt4 key购买 nike

我的 Rails 项目中有一个数据模型,其中有一个序列化字段:

class Widget < ActiveRecord::Base
serialize :options
end

选项字段可以包含可变数据信息。例如,以下是装置文件中一条记录的选项字段:

  options:
query_id: 2
axis_y: 'percent'
axis_x: 'text'
units: '%'
css_class: 'occupancy'
dom_hook: '#average-occupancy-by-day'
table_scale: 1

我的问题是让用户在标准表单 View 中编辑此信息的正确方法是什么?

如果您仅使用简单的文本区域字段作为选项字段,您将仅获得 yaml 转储表示形式,并且该数据将作为字符串发回。

在 Rails 中编辑这样的序列化哈希字段的最佳/正确方法是什么?

最佳答案

如果您提前知道选项键是什么,您可以为它们声明特殊的 getter 和 setter,如下所示:

class Widget < ActiveRecord::Base
serialize :options

def self.serialized_attr_accessor(*args)
args.each do |method_name|
eval "
def #{method_name}
(self.options || {})[:#{method_name}]
end
def #{method_name}=(value)
self.options ||= {}
self.options[:#{method_name}] = value
end
attr_accessible :#{method_name}
"
end
end

serialized_attr_accessor :query_id, :axis_y, :axis_x, :units
end

这样做的好处是,它将选项数组的组件公开为属性,这允许您像这样使用 Rails 表单助手:

#haml
- form_for @widget do |f|
= f.text_field :axis_y
= f.text_field :axis_x
= f.text_field :unit

关于ruby-on-rails - 如何编辑表单中的 Rails 序列化字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1002963/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com