0

我正在渲染一条带有关联的记录,如下所示

render :json => Scheme.where("id=?", params[:id]).first
                      .to_json(:include => { :navs => { :only => [:schemeCode,:navDate,:navValue] }})

协会

Scheme has_many   navs
Nav    belongs_to scheme

我只需要在 Nav 中渲染最后一条记录,但上面将打印所有导航,因为它是一对多的。我试过 :limit => 1 并在 desc 中订购它,但限制本身不起作用。任何帮助将不胜感激。

render :json => Scheme.where("id=?", params[:id]).first
                      .to_json(:include => { :navs => { :only => [:schemeCode,:navDate,:navValue], :limit => 1 }})
4

1 回答 1

0
  1. 如果您正在创建复杂的 json 格式,请尝试gem 'jbuilder'RailsCast中引入 以将结构留给查看。

    在您show.json.jbuilder看来,使其类似于:

    @scheme = Scheme.find(params[:id]) json.scheme @scheme.as_json json.extract! @scheme.navs.last, :schemeCode, :navDate, :navValue

    这将以 json 格式呈现数据,并保持控制器干净整洁。

  2. 您的代码中的使用Scheme.where("id=?", params[:id]).first可以缩短,就Scheme.find(params[:id])好像您id是独一无二的一样。

于 2014-10-02T10:23:37.163 回答