2012-07-15 84 views
4

控制器:傳遞參數來模擬

user = User.find(params[:id]) 
respond_with({:posts => @posts.as_json}) 

型號:

def as_json(options = {}) 
    { 
    name: self.name, 
    ... 
    } 
end 

我要像params[:id]通過parmeters到as_json功能更改JSON顯示的東西。

我該怎麼辦?

回答

5

好,as_json確實需要一個選項哈希,所以我想你可以把它用

respond_with({:posts => @posts.as_json(:params => params)}) 

那麼你可以參考PARAMS在as_json定義:

def as_json(options = {}) 
    params = options[:params] || {} 
    { 
    name: self.name, 
    params_id: params[:id] 
    ... 
    } 
end 
+0

不幸的是,我不認爲這有效。 ActiveSupport(至少在rails4中)並沒有將選項傳遞給ActiveModel as_json。看到這裏:https://github.com/rails/rails/blob/3762ee0baa2285bdc4a76d4d492fbe34a10cdc3a/activesupport/lib/active_support/json/encoding.rb#L299 - 我很好奇,如果有另一種方法 – 2013-10-03 00:50:02

+0

對不起,讓我澄清:這如果您在高級對象上調用to_json,並且嵌套的屬性/對象將被序列化並因此也調用了as_json,則它將不起作用。 – 2013-10-03 01:06:06