现在在我的线程控制器中我有以下
def thread
@thread = Thread.find(params[:id])
....
render :json => {"success" => 1}, :content_type => 'application/json'
end
我想做的是构建json响应以包含@thread,但只有一些参数,所以它是这样的:
{"success" => 1, "thread" => {"id": 1, "title": "hello world"}
知道如何在rails控制器中构建这个json对象吗?目标是不包括所有线程字段并包括不是线程字段的成功?
由于
答案 0 :(得分:3)
您应该使用模型的as_json
函数。
render :json => {"success" => 1, :thread => @thread.as_json(:only => [:my, :wanted, :attributes]) }
as_json包含大量选项,可帮助您构建准备好JSON编码的哈希,包括only
和except
,除了列出的内容之外,还包括模型上的所有属性。 methods
将添加对象上可用的其他方法,include
将关联(belongs_to,has_one,has_many等)添加到哈希中。
有关更多信息示例,请参阅:http://api.rubyonrails.org/classes/ActiveModel/Serializers/JSON.html
上的as_json文档答案 1 :(得分:1)
怎么样
render :json => {"success" => 1, "thread" => { "id" => @thread.id, "title" => @thread.title } }, :content_type => 'application/json'
答案 2 :(得分:1)
render :json => {"success" => 1, "thread" => @thread.attributes.select{ |k, v| ["id", "title"].include? k }}