2014-04-01 23 views
5

Aktif Yönetici işleme JSON tipi, göç gibi görünüyor:json için giriş sınıfını bulunamıyor - Ben Postgres geliyor benim modelde JSON türü var

create_table :people do |t| 
    t.string :name 
    t.json :links 
end 

bu JSON nesnesinin yapısı benziyor:

{ 
    "facebook" : "u12345", 
    "google" : "u54321" 
} 

ve onlar düzenlenebilir veya yeni anahtar/değer eklenebilir böylece Aktif Record ben bu nesneyi görüntülemek için çalışılıyor:

form do |f| 
    f.inputs "Person Details" do 
     f.input :name 
     f.input :links <- Error here because active admin doesn't recognise JSON type 
    end 
    f.actions 
    end 

Etkin yönetici tarafından bir kişi girişini düzenlemeye gittiğimde "Json için giriş sınıfı bulunamadı" iletisi alırım.

json yapısında her anahtar, bir girdi için bir etiket olması için bunu istiyorum mesela: Ben 3/4 önceden tanımlanmış anahtarları belirtmek istediğiniz benim aktif yönetici formu bloğunda

  __________ 
Facebook | u12345 | 
      ‾‾‾‾‾‾‾‾‾‾ 
      __________ 
Google | u54321 | 
      ‾‾‾‾‾‾‾‾‾‾ 
      __________ 
Twitter |   | 
      ‾‾‾‾‾‾‾‾‾‾ 

, facebook, google, twitter, bu anahtarlardan biri modelden gelen JSON yapısında mevcut değilse, boş bir giriş olarak görüntülenecek ve yöneticinin bu tuşa bir değer eklemesine izin verecek ve geri veritabanı. Anahtar JSON yapısında mevcutsa, giriş, düzenlenebilmesi için değeriyle doldurulur.

Bu yüzden sorum, JSON yapısını etkin yönetici tarafından nasıl yönetebilirim/düzenleyebilir ve verileri yukarıdaki biçimde nasıl temsil edebilirim?

cevap

13

Bu çalışır:

permit_params :name, {:links => [:facebook, :twitter]} 

    form do |f| 
    f.inputs "Person Details" do 
     f.input :name 
    end 
    f.inputs :name => "Links", :for => :links do |g| 
     g.input :facebook, :input_html => { :value => "#{person.links['facebook']}" } 
     g.input :twitter, :input_html => { :value => "#{person.links['twitter']}" } 
    end 
    f.actions 
    end 

O güzel çözüm değil, ama birisi daha iyi olmadıkça bunu yapmak zorunda kalacaktır cevap.