限制rails控制器响应中的特定字段

Sar*_*esh 11 controller ruby-on-rails

我有一个像控制器一样的动作

def index
  @videos =  Video.all.to_a

  respond_to do |format|
    format.xml  { render :xml => @videos }
    format.json { render :json => @videos }
  end
end
Run Code Online (Sandbox Code Playgroud)

视频有属性nametitle.

我希望返回的xml只包含title.

如何从响应中限制它.

Mau*_*res 32

这样做:

def index
  @videos =  Video.all

  respond_to do |format|
    format.xml  { render :xml => @videos.to_xml( :only => [:title] ) }
    format.json { render :json => @videos.to_json( :only => [:title] ) }
  end
end
Run Code Online (Sandbox Code Playgroud)

您可以在序列化文档中找到有关此内容的更多信息.


Dyl*_*kow 12

您可以selectVideo.all查询中使用子句,指定要包含的字段.

@videos = Video.select("id, name, title").all
Run Code Online (Sandbox Code Playgroud)

此外,您不需要调用to_a您的查询.

  • 同样,我不相信你需要:所有这个查询 (2认同)