我有一个ActiveRecord模型,我想转换为xml,但我不希望在xml中呈现所有属性.是否有一个参数可以传递给render方法以保持属性不在xml中呈现?
以下是我所谈论的一个例子.
def show @person = Person.find(params[:id]) respond_to do |format| format.xml { render :xml => @person } end end
生成以下xml
Paul 25 555.555.5555
但是,我不希望显示手机属性.render方法中是否有一些参数排除了在xml中呈现的属性?有点像下面的例子
def show @person = Person.find(params[:id]) respond_to do |format| format.xml { render :xml => @person, :exclude_attribute => :phone } end end
这将呈现以下xml
Paul 25
John Topley.. 14
您可以将一组模型属性名称传递给:only
和:except
选项,因此对于您的示例,它将是:
def show @person = Person.find(params[:id]) respond_to do |format| format.xml { render :text => @person.to_xml, :except => [:phone] } end end
to_xml文档
efleming.. 7
我只是想知道同样的事情,我在模型层所做的更改,所以我也不会做控制器,只是另一种选择,如果你有兴趣.
模型
class Person < ActiveRecord::Base def to_xml super(:except => [:phone]) end def to_json super(:except => [:phone]) end end
调节器
class PeopleController < ApplicationController # GET /people # GET /people.xml def index @people = Person.all respond_to do |format| format.html # index.html.erb format.xml { render :xml => @people } format.json { render :json => @people } end end end
我在每个对象上为json和xml设置了其中一个,当我想从每个替代格式化的响应中过滤掉东西时,有点方便.关于这种方法的一个很酷的事情是,即使你收回一个集合,它也会调用这个方法并返回过滤后的结果.
您可以将一组模型属性名称传递给:only
和:except
选项,因此对于您的示例,它将是:
def show @person = Person.find(params[:id]) respond_to do |format| format.xml { render :text => @person.to_xml, :except => [:phone] } end end
to_xml文档
我只是想知道同样的事情,我在模型层所做的更改,所以我也不会做控制器,只是另一种选择,如果你有兴趣.
模型
class Person < ActiveRecord::Base def to_xml super(:except => [:phone]) end def to_json super(:except => [:phone]) end end
调节器
class PeopleController < ApplicationController # GET /people # GET /people.xml def index @people = Person.all respond_to do |format| format.html # index.html.erb format.xml { render :xml => @people } format.json { render :json => @people } end end end
我在每个对象上为json和xml设置了其中一个,当我想从每个替代格式化的响应中过滤掉东西时,有点方便.关于这种方法的一个很酷的事情是,即使你收回一个集合,它也会调用这个方法并返回过滤后的结果.