2011-03-25 26 views
9

içinde bir sanal özellik dahil Bir response.to JSON hash içinde bir sanal öznitelik/yöntem eklemeye çalışıyorum.response_with hash

Modeli (employee.rb)

attr_reader :my_method 

def my_method 
    return "foobar" 
end 

Kontrolörü (employees_controller.rb)

respond_to :json 

def index 
    @employees = Employee.all 
    respond_with(:data => @employees, :total => Employee.all.count) 
end 

Ben için json kökü olarak "veri" sahip olması önemlidir "çalışanların" toplanması ve ayrıca "toplamın" karma içerisine dahil edilmesi. Bu iyi çalışır ve tüm çalışanların ve toplam değerin güzel bir JSON sonucunu döndürür.

Benim durumum: JSON yanıtında çalışanların karma içindeki her çalışan için "my_method" sanal özniteliğini nasıl ekleyebilirim?

Zaman ayırdığınız için teşekkürler!

cevap

14

Bu benim için çalıştı budur. doğru yönde beni işaret için cmason için

Employee.rb

def as_json(options={}) 
    super.as_json(options).merge({:my_method => my_method}) 
end 

teşekkürler. Diğer çözümler memnuniyetle karşılanır.

+0

teşekkür aşağıdaki kullanabilirsiniz. Tam da aradığım şey !!!! – Arkan

+2

Bir sözdizimi hatası var. Bu: super.as_json (seçenekler) .merge ({: my_method => my_method}) – jBilbo

+0

Sabit .. Teşekkürler! – primary0

1

hile yapmak gerekir Modelinizdeki as_json üzerine yazım:

def as_json(options={}) 
    { :methods=>[:my_method] }.merge(options) 
end 
3

yılında Raylar 3 tek

@yourmodel.to_json(methods: ['virtual_attr1', 'virtual_attr2']