0

正如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

该怎么办?

4

1 回答 1

0

我相信你可以简单地做到这一点:

serialize :properties

这应该与each方法一起使用。
然后 :properties 将被识别为哈希,而不是字符串。
HStore 应该是可选的。

:properties 在您的架构中应该是字符串
(我认为当您设置 HStore 插件时 - 您放置的是 hstore 类型而不是字符串)

于 2013-02-16T20:09:22.420 回答