3

我有一个 Rails 应用程序,它以 json 格式显示嵌套表单。

在 JSON 响应中,我还显示了一个代表另一个表的 id 字段。

如何显示与我得到的那个 id 对应的名称,以便我可以以我的 json 格式显示名称和 id。

我的控制器显示方法

def show
    @maintemplate = Maintemplate.find(params[:id])
    respond_with (@maintemplate) do |format|
      format.json { render :json => @maintemplate }
    end
  end

提前致谢....

4

2 回答 2

4

尝试这个:

render :json => @maintemplate.to_json(:include => { :user => { :only => :name } } )

这将user_id用一个user键和一个只有name属性的值替换键user,如下所示:

{
  "user_id": "12"
  "user": { "name": "..." }
  ...
}

然后,您可以使用 json 响应访问用户名["user"]["name"]。您还可以使用 访问用户 ID ["user_id"]

有关更多信息,请参阅as_json.

更新:

使用评论中提供的信息,我认为这是您真正想要的:

render :json => @maintemplate.to_json(:include => { :routine => { :include => :user, :user => { :only => :name } } } )
于 2012-11-29T04:40:01.977 回答
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
于 2012-11-29T14:29:15.480 回答