【问题标题】:Pass method chains to to_json将方法链传递给 to_json
【发布时间】:2010-01-12 20:15:42
【问题描述】:

我知道你可以将你希望的值传递给 json 对象的方法,如下所示:

# user.rb
def name
  first_name + last_name
end

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

但是,如果我想稍微调整从方法返回的值(使用文本助手说),有没有办法做到这一点?我想另一种问法是#to_json 支持任意属性吗?如果不是,为什么不呢?以前有没有其他人遇到过这种情况?

【问题讨论】:

    标签: ruby-on-rails ruby 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 }
    }
    

    【讨论】:

    • 是的,这就是我一直在做的事情,但是将这些属性作为用户对象上的属性来访问会更好,因为它们就是这样......
    • 这不起作用,因为@user.to_json 将返回一个字符串。当render :json 收到该字符串时,@user JSON 被转义。
    猜你喜欢
    • 2010-11-13
    • 2015-11-04
    • 2011-01-01
    • 2021-04-25
    • 2014-06-03
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多