0

http://railscasts.com/episodes/345-hstoreで提案されているように、次を追加しました。

serialize :properties, ActiveRecord::Coders::Hstore

私のモデルに。これにより、ビューでキーと値のペアを反復処理できます (それがないと、文字列エラーに対して未定義のメソッド「each」が発生します)。

<% @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 は、スキーマ内の String である必要があります
(HStore プラグインをセットアップするときに、文字列の代わりに hstore タイプを入力すると思います)

于 2013-02-16T20:09:22.420 に答える