我在数据库中保存了一个小的 JSON 片段,如下所示,但我无法以可用的方式检索数据。
在这个应用程序中,Rails 通过 fetch AJAX 调用获取 JSON,并成功地将以下内容保存在 decor 字段中:
{"drapes": "red", "table": "wood", "candles":"true"}
在 Rails 控制台中,这符合预期:
> p = Party.last
=> ...
> p.decor
=> "{:drapes=>\"red\", :table=>\"wood\", :candles=>\"true\"}"
目前, decor是 SQLite 中的(数据类型)文本字段。我以前使用过 PostgreSQL 来处理 JSON,但现在不想在这个项目上去那里,并且给出了官方文档参考(如下),应该能够在没有任何额外 gem 的情况下进行管理。
这是https://api.rubyonrails.org/classes/ActiveRecord/AttributeMethods/Serialization/ClassMethods.html推荐的模型(party.rb) :
class Party < ApplicationRecord
serialize :decor, JSON
end
这是控制器(party_controller.rb)中的相关操作:
def create
@party = Party.new(party_params)
@party.save
end
所以一切都很好,直到我真正想要提取装饰并(例如)在视图模板中显示它。使用以下内容(在party/index.html.erb中)...
<p>
<%= p.decor.drapes %>
</p>
...我得到:
派对中的 NoMethodError#index
未定义的方法“窗帘”
p.decor显然是作为错误的数据类型从模型中出来的,但是尽管在控制台中进行了各种实验,但我看不到如何使用它们的键提取 JSON 值。