如何在Rails 3应用程序JSON响应中包含其他字段

时间:2012-11-29 03:52:31

标签: ruby-on-rails json

我有一个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

提前致谢....

2 个答案:

答案 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