正如http://railscasts.com/episodes/345-hstore中所建议的,我补充说:
serialize :properties, ActiveRecord::Coders::Hstore
到我的模型。这允许我迭代视图中的键/值对(没有它,我得到一个未定义的方法“每个”用于字符串错误):
<% @item.properties.try(:each) do |key, value| %>
<%= key %>: <%= value %><br />
<% end %>
我设法通过将 RailsAdmin 中的 hstore 字段明确声明为文本字段来使其正常工作:
class Item < ActiveRecord::Base
attr_accessible :name, :properties, as: :admin
serialize :properties, ActiveRecord::Coders::Hstore
rails_admin do # without this block, properties gets ignored in RailsAdmin
edit do
field :name
field :properties, :text
end
end
end
如果我停用了上面的序列化调用,我可以在 RailsAdmin 中按以下格式设置哈希:
"key1" => "value1", "key2" => "value2"
然而,当序列化调用没有被注释掉时(为了让视图中的循环工作),RailsAdmin 在保存哈希时会崩溃:
undefined method `map' for String
该怎么办?