gpt4 book ai didi

ruby-on-rails - 编辑表单中的序列化哈希?

转载 作者:行者123 更新时间:2023-12-04 05:49:37 28 4
gpt4 key购买 nike

我正在序列化存储在 settings 中的散列表中的字段,并希望能够在表单字段中编辑该散列。

class Template < ActiveRecord::Base
serialize :settings
end

但我只是做<%= f.text_area :settings %>然后文本区域只显示序列化数据而不是哈希。

如何让散列显示在文本区域?

最佳答案

也许可以为您的模型设置另一个访问器。

class Template < ActiveRecord::Base
serialize :settings
attr_accessor :settings_edit

before_save :handle_settings_edit, :if => lambda {|template| template.settings_edit.present? }

def settings_edit
read_attribute(:settings).inspect # should display your hash like you want
end

protected
def handle_settings_edit
# You may want to perform eval in your validations instead of in a
# before_save callback, so that you can show errors on your form.
begin
self.settings = eval(settings_edit)
rescue SyntaxError => e
self.settings = settings_edit
end
end
end

然后在您的表单中使用 <%= f.text_area :settings_edit %> .

我没有测试过这段代码,但理论上它应该可以工作。祝你好运!

警告:使用 eval这样是非常危险的,在这个例子中,用户可以在编辑框中用一行删除整个模板表 Template.destroy_all .如果涉及用户输入,请使用不同的方法将字符串转换为散列。

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

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