2010-01-12 31 views
1

我知道你可以傳遞方法,其中要提供給JSON對象,像這樣的價值觀:通行證法鏈to_json

# user.rb 
def name 
    first_name + last_name 
end 

# some controller 
render :json => @user.to_json(:methods => :name) 

但是,如果我想按摩的方法有點返回的值(用文字助手說)有沒有辦法做到這一點?我想另一種方式來問這個問題#to_json是否支持任意屬性?如果不是,爲什麼不呢?有沒有其他人遇到過這個?

回答

1

您可以使用「render:json」來指定JSON輸出中的任意屬性。這裏有一個例子:

render :json => { :arbitraryAttribute => arbitrary_method_to_call(), :user => @user.to_json } 

上面的代碼會產生JSON如下所示:

{ 
    "arbitraryAttribute":"returnValueOfMethodCall", 
    "user":{ the result of @user.to_json } 
} 
+0

是的,這就是我一直在做,但它也只是這麼多的更好訪問這些屬性作爲用戶對象的屬性,因爲這就是他們的... – tfwright 2010-02-02 02:07:54

+0

這不起作用,因爲@ user.to_json將返回一個字符串。當'render:json'接收到該字符串時,'@ user' JSON會被轉義。 – 2010-04-03 18:11:27