4

我目前在控制器中有这个方法:

def show
  property = Property.find(params[:id])
  respond_to do |format|
    format.xml { render :xml => property.to_xml(:except => [:address1, :address2, :analysis_date, :analysis_date_2, ...]) }
    format.json { render :json => property.to_json(:except => [:address1, :address2, :analysis_date, :analysis_date_2, ...]) }
  end
end

似乎我可以重构此代码以使用 respond_with,但我不确定如何自定义输出。我是否需要重写 as_json 和 to_xml 方法才能自定义返回的数据?如果我重写这些方法,属性关联是否仍能正确处理?例如,一个物业有许多租户和许多承包商。我可能还需要返回这些元素。

我会假设控制器方法可以简化为此。

def show
  property = Property.find(params[:id])
  respond_with(property)
end
4

1 回答 1

1

respond_with方法有两个参数: theresources*和 a&block所以你应该能够做到这一点:

def show
  property = Property.find(params[:id])
  respond_with(property, :except => [:address1, 
                                     :address2, 
                                     :analysis_date, 
                                     :analysis_date_2, 
                                     ...])
end

请记住,为了respond_with正确使用我们,您需要respond_to :html, :json, :xml在控制器顶部添加。所以它respond_with知道要回应什么哑剧。

于 2011-12-11T11:09:46.100 回答