我有一个Rails应用程序,它以json格式显示嵌套表单。
在JSON Response中,我还显示了一个代表另一个表的id字段。
如何显示与该ID相对应的名称,以便我能以json格式显示名称和ID。
我的控制器 show method
def show
@maintemplate = Maintemplate.find(params[:id])
respond_with (@maintemplate) do |format|
format.json { render :json => @maintemplate }
end
end
提前致谢....
答案 0 :(得分:4)
试试这个:
render :json => @maintemplate.to_json(:include => { :user => { :only => :name } } )
这会将user_id
密钥替换为user
密钥和仅name
属性user
的值,如下所示:
{
"user_id": "12"
"user": { "name": "..." }
...
}
然后,您可以使用["user"]["name"]
访问json响应中的用户名。您还可以使用["user_id"]
访问用户ID。
有关详情,请参阅documentation on as_json
。
<强>更新强>
使用评论中提供的信息,我认为这是您真正想要的:
render :json => @maintemplate.to_json(:include => { :routine => { :include => :user, :user => { :only => :name } } } )
答案 1 :(得分:1)
使用您希望调用的类所需的其他方法属性添加到as_json方法。
class MainTemplate
...
def name
User.find(self.user_id).name
end
def as_json(options = {})
options[:methods] = :name
super(options)
end
end